- •1.1. Основные этапы создания программы
- •1.2. Алгоритмы
- •2.1. Структура типов в Turbo Pascal
- •Стандартные скалярные типы. Типы целых чисел
- •2.3. Операции побитовой обработки
- •2.4. Представление вещественных чисел в эвм
- •2.5. Символьный тип
- •2.6. Булевский тип
- •2.7. Перечисленный тип
- •2.8. Интервальный тип (диапазон)
- •3.1. Структура программы на turbo pascal
- •3.2. Основные операторы языка
- •3.2.1. Простые операторы
- •3.2.2. Операторы ввода-вывода
- •3.2.3. Структурные операторы
- •3.2.4. Условные операторы
- •3.2.5. Операторы повтора (цикла)
- •4.1. Массивы
- •4.2. Строковый тип
- •4.3. Множества
- •5.1. Процедуры и функции
- •5.2. Процедуры и функции пользователя
- •5.3. Передача параметров по значению и по ссылке
- •5.4. Рекурсивные процедуры и функции
- •6.1. Структура модулей
- •6.2. Компиляция и использование модулей
- •7.1. Записи
- •7.2. Вложенные записи
- •7.3. Записи с вариантами (вариантные записи)
- •7.4. Файлы
- •7.5. Подпрограммы для работы с файлами
- •7.5.1. Процедуры
- •7.5.2. Функции
- •7.6. Примеры программ для обработки файлов
- •7.7. Текстовые файлы
- •8.1. Структура оперативной памяти для программ на Turbo Pascal
- •8.2. Динамические структуры данных
- •8.3. Основные процедуры и функции для работы с динамическими переменными
- •8.4. Динамика выделения памяти в куче
- •8.5. Линейные списки. Способы создания и обработки
- •8.6. Нелинейные списки. Способы создания и обработки
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
5.1. Процедуры и функции
Подпрограммой называется именованная, логически законченная группа операторов, которую можно вызывать по имени любое количество раз из любого места программы. Понятие подпрограммы как обособленной именованной части программы со своими собственными объектами (константами, переменными) является во многих языках программирования основным средством структурирования программ. За наличие подпрограмм как средства структурирования программ язык Паскаль называется процедурно-ориентированным языком.
72
Концепция подпрограмм впервые была предложена М. Уилксом в 1957 году.
В Паскале подпрограммы реализуются в виде процедур и функций.
Процедура – это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий. Структура процедуры повторяет структуру программы. Процедура не может выступать как операнд в выражении. Упоминание имени процедуры в тексте программы приводит к активизации процедуры и называется ее вызовом.
Функция аналогична процедуре, но имеет два отличия: функция передает в точку вызова скалярное значение, как значение имени этой функции; функция может входить в выражение как операнд.
Все процедуры и функции в языке Паскаль делятся на две группы: встроенные (стандартные) и определенные пользователем.
Характеристики основных стандартных процедур и функций приведены в табл. 5.1.
Таблица 5.1
Арифметические процедуры и функции |
|
Abs(x: real / integer): real / integer Abs(-45)=45 Abs(-3.723)=3.723 |
Вычисление абсолютной величины x. Тип результата совпадает с типом аргумента. |
ArcTan(x: real): real |
Вычисление угла, тангенс которого равен x. |
Cos(x: real): real |
Вычисление косинуса x.. Аргумент x задает значение угла в радианах. |
73
Продолжение табл. 5.1
Exp(x: real): real |
Вычисление экспоненты числа x (- основание натурального логарифма). |
Frac(x: real): real
Frac(3.5)=0.5 Frac(0.25*11)=0.75 |
Вычисление дробной части числа x. Результат имеет вещественный тип. |
Int(x: real): real
Int(123.546)=123 Int(-365.567)=-365
|
Вычисление целой части x. Если , то функция возвращает ближайшее целое, меньшее или равное x. Если , то функция возвращает ближайшее целое, большее или равное x. |
Ln(x: real): real |
Вычисление натурального логарифма числа x |
Sin(x: real): real |
Вычисление синуса x. Аргумент x задает значение угла в радианах. |
Sqr(x: real / integer): real / integer |
Вычисление квадрата величины x. Тип результата совпадает с типом аргумента. |
Sqrt(x: real): real |
Вычисление квадратного корня из x. |
Random: real |
Генерирует значение случайного числа из диапазона 0..0.99. |
Random(i:word):word |
Генерирует значение случайного числа из диапазона 0..1. |
74
Продолжение табл. 5.1
Randomize |
Изменение базы генерации случайных чисел. |
Скалярные процедуры и функции |
|
Dec(x{,n})
Dec(7)=6 |
Процедура уменьшает значение целочисленной переменной на величину . Если отсутствует, то x уменьшается на 1. |
Inc(x{,n})
Inc(5)=6
|
Процедура увеличивает значение целочисленной переменной на величину . Если отсутствует, то x увеличивается на 1. |
Функции преобразования типов |
|
Roud(x:real):longInt
Round(-27.34)=27 Round(3.7)=4 Round(0.5)=1 |
Возвращает значение x, округленное до ближайшего целого числа. |
Trunc(x:real):longInt Trunc(3.7)=3 Trunc(-10.7)= -10 |
Возвращает ближайшее целое число, меньшее или равное x, если , и большее или равное x, если . |
Процедуры управления программой |
|
Delay(i:word) Delay(1500) - задержка выполнения программы на 1.5 сек. |
Задержка времени выполнения программы на i мс. |
75
Продолжение табл. 5.1
Exit |
Выход из выполняемого блока в окружающую среду. Если текущий блок является процедурой или функцией, то выход производится во внешний блок. Если Exit находится в операторной части основной программы, программа прекращает свою работу и управление передается системе программирования. |
|
Halt(n:word) |
Прекращение выполнения программы и передача управления системе программирования; - код завершения программы, передаваемый в операционную систему. |
|
Специальные процедуры и функции |
||
|
Пересылает содержимое основной памяти, начиная с первого байта, занимаемого переменной , в область, которая начинается с первого байта переменной . Длина областей определяется параметром d. Параметры и - переменные любого типа. |
76
Продолжение табл. 5.1
Hi(i: integer): byte
Hi($3657)=$0036 Hi($0810)=$0008
|
Выделяет старший байт значения i и помещает его в младший байт результата. Старший байт результата равен 0. |
Lo(i: integer): byte
Lo($3657)=$0057 Lo($0810)=$0010 |
Выделяет младший байт значения i и помещает его в младший байт результата. Старший байт результата равен 0 |
Swap(i: integer): integer Swap($7893)=9378 Swap($1020)=2010
|
Меняет местами содержимое младшего и старшего байта целочисленного параметра i. |
SizeOf(x) x: integer; x=136; SizeOf(x) =2. x: real; x=145.36; SizeOf(x) =6. x:string(14); x=’Класс’; SizeOf(x) =15. |
Вычисляет объем основной памяти в байтах, которую занимает указанная переменная или тип. |
KeyPressed |
Возвращает значение true, если на клавиатуре нажата какая-либо клавиша, и false в противном случае. |
77
Окончание табл. 5.1
FillChar(p,dl,z) FillChar(Mas, SizeOf(Mas),0)-заполняет все биты файла Mas нулями
|
Заполняет побайтно область основной памяти заданным значением (наполнителем). Область начинается с первого байта указанной переменной p и имеет размер, заданный параметром dl; p – переменная любого типа; dl – целочисленное выражение, указывающее длину; z – заполнитель, выражение литерного или байтового типа |