
- •Файлы языка Pascal. Файловые переменные, описание текстовых, бинарных файлов.
- •2) Файлы языка Pascal. Порядок работы с файлами, используемые функции.
- •3) Файлы языка Pascal. Стандартные процедуры и функции обслуживания файлов.
- •4) Файлы языка Pascal. Текстовые файлы.
- •5) Файлы языка Pascal. Типизированные файлы.
- •6)Рекурсивные подпрограммы
- •7) Записи: определение, объявление, обращения к записи и её полям, оператор with.
- •8) Записи: определение, объявление. Массив записей: объявление, обращения к полям.
- •9) . Тип данных строки: описание символьных строк, способы задания, обращение к строковым переменным.
- •10) Тип данных строки: описание символьных строк. Стандартные функции и процедуры обработки строк.
- •11) Тип данных множества: описание множества, операции с множествами.
- •12) Файлы языка Pascal. Разновидности файлов, способы описания и объявления файловых переменных.
12) Файлы языка Pascal. Разновидности файлов, способы описания и объявления файловых переменных.
Файлом называют именованную последовательность элементов данных, расположенных обычно, во внешней памяти.
В Паскале файл определяется как последовательность компонентов, относящихся к одному типу: файл записей, файл целых чисел, файл строк и т. п. Особенностью файлов по сравнению с другими структурными типами данных является то, что в любой момент доступен только один компонент.Количество компонентов файла заранее не определяется.Максимальный размер файла, размещенного во внешней памяти, ограничивается лишь техническими возможностями вычислительной системы
Когда нужно использовать файлы :Файлы полезны, если объем входных данных превосходит посильный при ручном вводе. (Крайним является случай, когда входные или выходные данные заведомо не могут поместиться в оперативной памяти.) Файлы нужны, если приходится многократно вводить одну и ту же информацию, с минимальными изменениями или вовсе без изменений (например, при отладке программы). Файлы необходимы, если нужно сохранять информацию о результатах работы программы, полученных при вводе различных входных данных (то есть: при поиске ошибок в программе).
Файлом называют именованную последовательность элементов данных (компонент файла), расположенных, как правило, во внешней памяти: на дискетах,винчестере, CD или других устройствах хранения информации, также устройствах ввода-вывода.
В файле может храниться текст, программа, числовые данные, графическое изображение и т.д.
Для организации работы с файлами программа на языке Паскаль взаимодействует с операционной системой.
Файл – набор данных на диске, имеющий имя.
Разновидности файлов:текстовые (только текст без оформления, не содержат управляющих символов (с кодами < 32) возможно создавать, просматривать и редактировать "вручную" - в любом текстовом редакторе; при считывании данных не требуется заботиться об преобразовании ,бинарные(могут содержать любые символы кодовой таблицы информация записывается по байтам и потому не доступна для просмотра или редактирования в удобных для человека текстовых редакторах; зато такие файлы более компактны, чем текстовые),папки(каталоги)
Для идентификации файлов используют файловые переменные. Файловая переменная не может быть задана константой. В зависимости от способа представления информации различают три типа файлов, соответственно различаются и способы описания файловых переменных
Файловая переменная текстового файла описывается как:
Туре <идентификатор файловой переменной> = text;
Текстовые файлы используют для работы с текстами, представленными в виде строк переменной длины.
только текст без оформления, не содержат управляющих символов (с кодами < 32)
*.txt, *.log,*.htm, *.html
возможно создавать, просматривать и редактировать "вручную" - в любом текстовом редакторе; при считывании данных не требуется заботиться об преобразовании
Бинарные
могут содержать любые символы кодовой таблицы
*.doc, *.exe,*.bmp, *.jpg,*.wav, *.mp3,*.avi, *.mpg
информация записывается по байтам и потому не доступна для просмотра или редактирования в удобных для человека текстовых редакторах; зато такие файлы более компактны, чем текстовые
13) Структура программы на языке Паскаль
Программа состоит из заголовка и блока.
Заголовок программы
В заголовке указывается имя программы и список параметров. Общий вид:
program n (input, output, x, y,…);
здесь n – имя программы
Заголовка может и не быть или он может быть без параметров.
Блок
Блок программы состоит из шести разделов, следующих в строго определенном порядке:
раздел меток (label)
раздел констант (const)
раздел типов (type)
раздел переменных (var)
раздел процедур и функций
раздел действий (операторов).
Раздел действий должен присутствовать всегда, остальные разделы могут отсутствовать.
Каждый из первых четырех разделов начинается с соответствующего ключевого слова (label, const, type, var), которое записывается один раз в начале раздела и отделяется от последующей информации только пробелом, либо концом строки, либо комментарием.
Раздел меток (label)
Любой выполняемый оператор может быть снабжен меткой – целой положительной константой, содержащей не более 4-х цифр. Все метки, встречающиеся в программе, должны быть описаны в разделе label.
Общий вид:
label l1, l2, l3…;
здесь l1, l2, l3 – метки.
Пример. label 5, 10, 100;
Метка отделяется от оператора двоеточием.
Пример. Пусть оператор a := b имеет метку 20. Тогда этот оператор выглядит так:
20: a := b;
Раздел констант (const)
Это делает программу более наглядной и удобной при отладке и внесении изменений.
Общий вид:
const a1 = c1; a2 = c2; …
здесь a1 – имя константы, c1 – значение константы.
Пример. const pi = 3.14; c = 2.7531;
Раздел типов (type)
Если в программе вводится тип, отличный от стандартного, то этот тип описывается в разделе type:
type t1 = вид_типа;
t2 = вид_типа;
где t1 и t2 – идентификаторы вводимых типов.
Затем тип используется при объявлении переменных.
Раздел описания типов имеет большое значение в программе на языке Pascal. Если в программе не использовать типы, то можно столкнуться с несовместимостью типов переменных, даже если они описаны одинаково.
Раздел переменных (var)
Пусть в программе встречаются переменные v11, v12,…; все они должны быть описаны следующим образом:
var v11, v12,…: type1;
v21, v22,…: type2; …
здесь v11, v12,… - имена переменных; type1 – тип переменных v11, v12,…; type2 – тип переменных v21, v22,….
Пример. var k, i, j: integer; a, b: real;
Каждая переменная должна быть описана до ее использования в программе и отнесена к одному и только одному типу. Названия разделов (const, type, var…) указываются только один раз.
Пример.
var a: real;
b: real;
Таким образом, в разделе var вводится имя каждой переменной и указывается, к какому типу эта переменная принадлежит. Тип переменной можно задать двумя способами: указать имя типа (например, real, color и т.д.), либо описать сам тип, например: array[1..16] of char
Раздел процедур и функций
Здесь присутствуют заголовки и тела пользовательских процедур и функций.
Раздел действий (операторов)
Эта часть программы начинается с ключевого слова begin и заканчивается словом end, после которого должна стоять точка.
14) Классификация типов данных языка Паскаль
Тип данных определяет:
возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
внутреннюю форму представления данных в ЭВМ;
операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу
Типы данных:
Типы данных, конструируемые программистом, описываются в разделе type
Целочисленные типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел.
Целочисленный тип данных BYTE,WORD,Беззнаковые данные – не могут быть отрицательными.,Целое без знака,SHORTINT, INTEGER, LONGINT
Вещественные типы определяют константы, переменные и функции, значения которых реализуются множеством действительных (вещественных) чисел.
Вещественный тип данных REAL,Single,double,extended,comp
Логический тип данных BOOLEAN
Данные, которые могут принимать логические значения True и False.
Not – логическое отрицание
And – логическое И (конъюнкция)
Or – логическое ИЛИ (дизъюнкция)
Xor – логическое исключающее ИЛИ
Символьный тип данных CHAR
Строковый тип данных STRING
Интервальный тип данных
Позволяет задавать две константы, определяющие границы диапазона значений для данной переменной.
Обе константы должны принадлежать одному из стандартных типов (тип real здесь недопустим).
Значение первой константы должно быть обязательно меньше второй.
Перечисляемый тип данных
Определение перечисляемого типа задает упорядоченное множество значений путем перечисления имен, обозначающих эти значения.
Только для величин порядковых типов определены следующие стандартные функции и процедуры:
Функция ord(x) возвращает порядковый номер значения переменной x (относительно того типа, к которому принадлежит переменная х).
Функция pred(x) возвращает значение, предшествующее х (к первому элементу типа неприменима).
Функция succ(x) возвращает значение, следующее за х (к последнему элементу типа неприменима).
Процедура inc(x) возвращает значение, следующее за х (для арифметических типов данных это эквивалентно оператору x:=x+1).
Процедура inc(x, k) возвращает k-е значение, следующее за х (для арифметических типов данных это эквивалентно оператору x:=x+k).
Процедура dec(x) возвращает значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-1).
Процедура dec(x, k) возвращает k-e значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-k).
15) Совместимость и эквивалентность типов данных языка Паскаль
Совместимость типов данных
В общем случае при выполнении арифметических (и любых других) операций компилятору требуется, чтобы типы операндов совпадали:
нельзя, например, сложить массив и множество,
нельзя передать вещественное число функции, ожидающей целый аргумент, и т.п.
В то же время, любая процедура или функция, написанная в расчете на вещественные значения, сможет работать и с целыми числами.
Правила, по которым различные типы данных считаются взаимозаменяемыми, приведены ниже.
Эквивалентность
Эквивалентность - это наиболее высокий уровень соответствия типов. Она требуется при действиях с указателями (см. Тему далее), а также при вызовах подпрограмм.
"А как же тогда быть с оговоркой, сделанной двумя абзацами выше?" - спросите вы.
Мы не станем сейчас описывать механизм передачи аргументов процедурам и функциям, поясним лишь, что эквивалентность типов требуется только для параметров-переменных
Итак, два типа - Т1 и Т2 - будут эквивалентными, если верен хотя бы один вариант из перечисленных ниже:
Т1 и Т2 совпадают;
Т1 и Т2 определены в одном объявлении типа;
Т1 эквивалентен некоторому типу Т3, который эквивалентен типу Т2.
Пример
type T2 = T1;
T3 = T1;
T4, T5 = T2;
Здесь эквивалентными будут
Т1 и Т2;
Т1 и Т3;
Т1 и Т4;
Т1 и Т5;
Т4 и Т5.
А вот Т2 и Т3 - не эквивалентны!
Итак, два типа - Т1 и Т2 - будут эквивалентными, если верен хотя бы один вариант из перечисленных ниже:
Т1 и Т2 совпадают;
Т1 и Т2 определены в одном объявлении типа;
Т1 эквивалентен некоторому типу Т3, который эквивалентен типу Т2.
Совместимость типов требуется при конструировании выражений, а также при вызовах подпрограмм (для параметров-значений).
Совместимость означает, что для переменных этих типов возможна операция присваивания - хотя во время этой операции присваиваемое значение может измениться:
произойдет неявное приведение типов данных (см. п. "Приведение типов данных" ниже).
В отличие от простой совместимости, совместимость по присваиванию гарантирует, что в тех случаях, когда производится какое-либо присваивание (используется запись вида a:=b; или происходит передача значений в подпрограмму или из нее и т.п.), не произойдет никаких изменений присваиваемого значения.
Два типа данных Т1 и Т2 называются совместимыми по присваиванию, если выполняется хотя бы один вариант из перечисленных ниже:
Т1 и Т2 эквивалентны, но не файлы;
Т1 и Т2 совместимы, причем Т2 – некоторое подмножество в Т1;
Т1 – вещественный тип, а Т2 – целый.
Функции изменяющие типы данных
В заключение приведем список стандартных функций, аргумент и результат которых принадлежат к совершенно различным типам данных:
trunc: real integer;
round: real integer;
val: string byte / integer / real;
chr: byte char;
ord: <порядковый_тип> longint;
16) Простые и сложные условия языка Паскаль
Простые и сложные условия в Паскале.
В Паскале условие — выражение логического типа (BOOLEAN), которое может принимать одно из двух значений: «истина» (True) или «ложь» (False).
В Паскале имеются шесть операторов, позволяющих сравнивать между собой значения числовых переменных, а также значение переменной и константу:
(больше),
< (меньше),
= (равно),
<> (не равно),
>= (больше либо равно),
<= (меньше либо равно).
Условия, которые составлены с использованием одного оператора сравнения, называются простыми условиями. Общий вид:
<выражение> оператор сравнения <выражение>
Из простых условий, которые являются выражениями логического типа можно строить сложные условия, применяя к ним, как к операндам, логические операторы: NOT (не), AND(и), OR(или).
Результаты применения логических операторов к операндам логич. типа:
OP1 OP2 OP1 AND OP2 OP1 OR OP2 NOT OP1
Л Л Л Л И
Л И Л И И
И Л Л И Л
И И И И Л
При записи сложных условий надо учитывать, что логические операторы имеют более высокий приоритет, чем операторы сравнения, поэтому простые условия стоит брать в скобки.
Пример: (x > 5) or (a+b < 0).
17) Подпрограммы в языке Паскаль. Структура, назначение и применение подпрограмм.
Подпрограммы нужны для того, чтобы упростить структуру программы и облегчить ее отладку. В виде подпрограмм оформляются логические законченные части программы.
Подпрограмма - это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов.
Подпрограмма - это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами:
именем,
разделами описания меток (label),
разделами описания констант (const),
разделами описания типов (type),
разделами описания переменных (var)
и даже со своими (вложенными) функциями и процедурами.
В Паскале два вида подпрограмм: процедуры и функции. Они имеют незначительные отличия в синтаксисе и правилах вызова. Процедуры и функции описываются в соответствующих разделах описания, до начала блока исполняемых операторов.
Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу.
При использовании процедур или функций программа должна содержать текст процедуры или функции и обращение к процедуре или функции.
Работа с процедурами и функциями состоит из двух частей:
описания процедуры или функции в разделе описаний процедур и функций программы;
вызова ее на исполнение (передача управления компьютером) с одновременной передачей исходных данных, необходимых для работы процедуры или функции.
По окончании работы процедуры или функции управление возвращается за точку вызова (к следующему после вызова оператору головной программы).
Процедура вызывается с помощью отдельного оператора, а функция - в правой части оператора присваивания, например:
inc(i); writeln(a, b, c); { вызовы процедур }
y := sin(x) + 1; { вызов функции }
Внутри подпрограмм можно описывать другие подпрограммы. Они доступны только из той подпрограммы, в которой они описаны
18) . Подпрограммы в языке Паскаль. Параметры и аргументы.
Подпрограммы нужны для того, чтобы упростить структуру программы и облегчить ее отладку. В виде подпрограмм оформляются логические законченные части программы.
Подпрограмма - это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов.
Подпрограмма - это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами:
именем,
разделами описания меток (label),
разделами описания констант (const),
разделами описания типов (type),
разделами описания переменных (var)
и даже со своими (вложенными) функциями и процедурами.
В Паскале два вида подпрограмм: процедуры и функции. Они имеют незначительные отличия в синтаксисе и правилах вызова. Процедуры и функции описываются в соответствующих разделах описания, до начала блока исполняемых операторов.
Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу.
В заголовке подпрограммы (в ее объявлении) указывается список формальных параметров переменных, которые принимают значения, передаваемые в подпрограмму извне во время ее вызова.
Для краткости мы далее будем опускать слово "формальный".
Поскольку внутри подпрограммы параметры рассматриваются как переменные с начальным значением, то имена локальных переменных, описываемые в разделе var (внутреннем для подпрограммы), не могут совпадать с именами параметров этой же подпрограммы.
Виды параметров подпрограмм
Список параметров, то есть величин, передаваемых в подпрограмму и обратно, содержится в ее заголовке. Для каждого параметра обычно задается его имя, тип и способ передачи. Либо тип, либо способ передачи могут не указываться.
Важно запомнить, что в заголовке подпрограммы нельзя вводить описание нового типа, там должны использоваться либо имена стандартных типов, либо имена типов, описанных программистом ранее в разделе type.
В Паскале четыре вида параметров:значения;переменные;константы;нетипизированные параметры.
Параметры-значения
Параметр-значение описывается в заголовке подпрограммы следующим образом:
имя : тип;
procedure P(x : integer);
Имя параметра может быть произвольным. Параметр х можно представить себе как локальную переменную, которая получает свое значение из главной программы при вызове подпрограммы. В подпрограмму передается копия значения аргумента.
При вызове подпрограммы на месте параметра, передаваемого по значению, может находиться выражение. Тип выражения должен быть совместим по присваиванию с типом параметра.
Параметры-переменные
Признаком параметра-переменной является ключевое слово var перед описанием параметра:
var имя : тип;
При вызове подпрограммы в область параметров копируется не значение переменной, а ее адрес, и подпрограмма через него имеет доступ к ячейке, в которой хранится переменная. Этот способ передачи параметров называется передачей по адресу. Подпрограмма работает непосредственно с переменной из вызывающей программы и, следовательно, может ее изменить.
Параметры-константы
Параметр-константу можно узнать по ключевому слову const перед описанием параметра:
const имя : тип;
Параметры составных типов (массивы, записи, строки) предпочтительнее передавать как константы, потому что при этом не расходуется время на копирование и место в стеке.
Результаты работы процедуры следует передавать через параметры-переменные, результат функции - через ее имя.
Нетипизированные параметры
Как можно догадаться из названия, при описании нетипизированных параметров не указывается тип. Передаются они всегда по адресу - либо как константы, либо как переменные, например:
procedure P(const a, b; var y);
19) Подпрограммы в языке Паскаль. Области действия имен.
Подпрограммы нужны для того, чтобы упростить структуру программы и облегчить ее отладку. В виде подпрограмм оформляются логические законченные части программы.
Подпрограмма - это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов.
Подпрограмма - это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами:
именем,
разделами описания меток (label),
разделами описания констант (const),
разделами описания типов (type),
разделами описания переменных (var)
и даже со своими (вложенными) функциями и процедурами.
В Паскале два вида подпрограмм: процедуры и функции. Они имеют незначительные отличия в синтаксисе и правилах вызова. Процедуры и функции описываются в соответствующих разделах описания, до начала блока исполняемых операторов.
Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу.
Области действия имен
Глобальные объекты - это типы данных, константы и переменные, объявленные в начале программы до объявления любых подпрограмм.
Эти объекты будут видны во всей программе, в том числе и во всех ее подпрограммах.
Глобальные объекты существуют на протяжении всего времени работы программы.
Локальные объекты объявляются внутри какой-нибудь подпрограммы и "видны" только этой подпрограмме и тем подпрограммам, которые были объявлены как внутренние для нее.
Локальные объекты не существуют, пока не вызвана подпрограмма, в которой они объявлены, а также после завершения ее работы.
Поскольку глобальные переменные видны в контекстах всех блоков, то их значение может быть изменено изнутри любой подпрограммы.
Этот эффект называется побочным, а его использование очень нежелательно, потому что может стать источником непонятных ошибок в программе.
Чтобы избежать побочного эффекта, необходимо строго следить за тем, чтобы подпрограммы изменяли только свои локальные переменные (в том числе и параметры-переменные).
Вообще говоря, совпадения глобальных и локальных имен допустимы, поскольку к каждому локальному имени неявно приписано имя той подпрограммы, в которой оно объявлено.
Таким образом, в приведенном выше примере (см. слайд 41) фигурируют переменные
a, g, pr1.p, pr1.b, pr1.f.pp, pr1.f.c, pr2.d.
Если имеются глобальная и локальная переменные с одинаковым именем, то изнутри подпрограммы к глобальной переменной можно обратиться, приписав к ней спереди имя программы:
<имя_программы>.<имя_глобальной_переменной>
20) . Подпрограммы в языке Паскаль. Процедуры.
Подпрограммы нужны для того, чтобы упростить структуру программы и облегчить ее отладку. В виде подпрограмм оформляются логические законченные части программы.
Подпрограмма - это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов.
Подпрограмма - это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами:
именем,
разделами описания меток (label),
разделами описания констант (const),
разделами описания типов (type),
разделами описания переменных (var)
и даже со своими (вложенными) функциями и процедурами.
В Паскале два вида подпрограмм: процедуры и функции. Они имеют незначительные отличия в синтаксисе и правилах вызова. Процедуры и функции описываются в соответствующих разделах описания, до начала блока исполняемых операторов.
Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу.
Процедуры
Процедуры следует объявлять так:
procedure <имя_процедуры> (<список_параметров>);
Если объявление процедуры оторвано от ее описания, нужно поставить после него ключевое слово forward:
procedure <имя_процедуры> (<список_параметров>); forward;
Описание подпрограммы должно идти после ее объявления. Оно осуществляется по следующей схеме (единой для процедур и функций):
uses <имена_подключаемых_модулей>;
label <список_меток>;
const <имя_константы> = <значение_константы>;
type <имя_типа> = <определение_типа>;
var <имя_переменной> : <тип_переменной>;
procedure <имя_процедуры>
<описание_процедуры>
function <имя_функции>
<описание_функции>;
begin
{начало тела подпрограммы}
<операторы>
end; (* конец тела подпрограммы *)
Описания двух различных подпрограмм не могут пересекаться: каждый блок должен быть логически законченным.
Однако внутри любой подпрограммы (она ведь тоже является программой) могут быть описаны другие процедуры или функции - вложенные. На них распространяются все те же правила объявления и описания подпрограмм.
21) Подпрограммы в языке Паскаль. Функции.
Подпрограммы нужны для того, чтобы упростить структуру программы и облегчить ее отладку. В виде подпрограмм оформляются логические законченные части программы.
Подпрограмма - это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов.
Подпрограмма - это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами:
именем,
разделами описания меток (label),
разделами описания констант (const),
разделами описания типов (type),
разделами описания переменных (var)
и даже со своими (вложенными) функциями и процедурами.
В Паскале два вида подпрограмм: процедуры и функции. Они имеют незначительные отличия в синтаксисе и правилах вызова. Процедуры и функции описываются в соответствующих разделах описания, до начала блока исполняемых операторов.
Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны. Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу.
Функция – это подпрограмма, определяющая одно – единственное скалярное или ссылочное значение, используемое при вычислении выражения.
Функции объявляются следующим образом:
function <имя_функции> (<список_параметров>): <тип_результата>;
В отличие от констант и переменных, объявление подпрограммы может быть оторвано от ее описания. В этом случае после объявления нужно указать ключевое слово forward:
function <имя_функции> (<список_параметров>): <тип_результата>; forward;