Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

Writeln('Press Enter to exit...'); Readln;

end.

Эта программа будет выполняться бесконечно, причем второй оператор Write не выполнится ни разу!

Внимание! В соответствии с правилами структурного программирования следует избегать применения оператора goto, поскольку он усложняет понимание логики программы. Оператор goto использовался на заре программирования, когда выразительные возможности языков были скудными. В языке Delphi без него можно успешно обойтись, применяя условные операторы, операторы повтора, процедуры Break и Continue, операторы обработки исключений (последние описаны в главе 4).

2.8. Подпрограммы

2.8.1. Общие положения

В практике программирования часто встречается ситуация, когда одну и ту же группу операторов требуется выполнить без изменений в нескольких местах программы. Чтобы избавить программиста от многократного дублирования одинаковых фрагментов, была предложена концепция подпрограмм. В этом разделе мы расскажем о том, как эта концепция реализована в языке Delphi.

Подпрограммой называется именованная логически законченная группа операторов, которую можно вызвать по имени (т.е. выполнить) любое количество раз из различных мест программы. В языке Delphi подпрограммы оформляются в виде процедур и функций.

Процедура — это подпрограмма, имя которой не может использоваться в выражениях в качестве операнда. Процедура состоит из заголовка и тела. По структуре ее можно рассматривать как программу в миниатюре. Когда процедура описана, ее можно вызвать по имени из любой точки программы (в том числе из нее самой!). Когда процедура выполнит свою задачу, программа продолжится с оператора, следующего непосредственно за оператором вызова процедуры. Использование имени процедуры в программе называется оператором вызова процедуры.

Функция также является подпрограммой, но в отличие от процедуры ее имя может использоваться в выражениях в качестве операнда, на место которого подставляется результат работы этой функции.

77

Все процедуры и функции языка Delphi подразделяются на две группы: встроенные и определенные программистом.

Встроенные процедуры и функции являются частью языка и могут вызываться по имени без предварительного описания. В данной главе рассматриваются лишь базовые группы встроенных процедур и функций, остальные будут рассмотрены в других главах по ходу изложения материала.

Процедуры и функции программиста пишутся программистом, т.е. вами, в

соответствии с синтаксисом языка и представляют собой локальные блоки. Предварительное описание процедур и функций программиста обязательно.

2.8.2. Стандартные подпрограммы

Арифметические функции

Abs(X) Возвращает абсолютное значение аргумента X.

Exp(X) Возвращает значение ex.

Ln(X) Возвращает натуральный логарифм аргумента X.

Pi Возвращает значение числа ?.

Sqr(X) Возвращает квадрат аргумента X.

Sqrt(X) Возвращает квадратный корень аргумента X.

Примеры:

Выражение

Результат

Abs(–4)

4

Exp(1)

2.17828182845905

Ln(Exp(1))

1

Pi

3.14159265358979

Sqr(5)

25

Sqrt(25)

5

Тригонометрические функции

ArcTan(X) Возвращает угол, тангенс которого равен X.

Cos(X) Возвращает косинус аргумента X (X задается в радианах).

Sin(X) Возвращает синус аргумента X (X задается в радианах).

Примеры:

78

Выражение Результат

ArcTan(Sqrt(3)) 1.04719755119660 Cos(Pi/3) 0.5

Sin(Pi/6) 0.5

Заметим, что в состав среды Delphi входит стандартный модуль Math, который содержит высокопроизводительные подпрограммы для тригонометрических, логорифмических, статистических и финансовых вычислений.

Функции выделения целой или дробной части

Frac(X) Возвращает дробную часть аргумента X.

Возвращает целую часть вещественного числа X. Результат принадлежит вещественному

Int(X) типу.

Round(X) Округляет вещественное число X до целого.

Trunc(X) Возвращает целую часть вещественного числа X. Результат принадлежит целому типу.

Примеры:

Выражение Результат

Frac(2.5) 0.5

Int(2.5) 2.0

Round(2.5) 3

Trunc(2.5) 2

Функции генерации случайных чисел

Random Возвращает случайное вещественное число в диапазоне 0 ? X < 1. Random(I) Возвращает случайное целое число в диапазоне 0 ? X < I.

Заново инициализирует встроенный генератор случайных чисел новым значением, Randomize полученным от системного таймера.

Подпрограммы для работы с порядковыми величинами

Chr(X) Возвращает символ, порядковый номер которого равен X. Dec(X, [N]) Уменьшает целую переменную X на 1 или на заданное число N. Inc(X, [N]) Увеличивает целую переменную X на 1 или на заданное число N. Odd(X) Возвращает True, если аргумент X является нечетным числом.

Ord(X) Возвращает порядковый номер аргумента X в своем диапазоне значений.

79

Pred(X) Возвращает значение, предшествующее значению аргумента X в своем диапазоне. Succ(X) Возвращает значение, следующее за значением аргумента X в своем диапазоне.

Примеры:

Выражение Результат

Chr(65) 'A'

Odd(3) True Ord('A') 65 Pred('B') 'A' Succ('A') 'B'

Подпрограммы для работы с датой и временем

Date Возвращает текущую дату в формате TDateTime. Time Возвращает текущее время в формате TDateTime.

Now Возвращает текущие дату и время в формате TDateTime. DayOfWeek(D) Возвращает день недели по дате в формате TDateTime. DecodeDate(...) Разбивает значение даты на год, месяц и день.

DecodeTime(...) Разбивает значение времени на час, минуты, секунды и милисекунды. EncodeDate(...) Формирует значение даты по году, месяцу и дню.

EncodeTime(...) Формирует значение времени по часу, минутам, секундам и милисекундам.

Процедуры передачи управления

Break Прерывает выполнение цикла. Continue Начинает новое повторение цикла.

Exit Прерывает выполнение текущего блока.

Halt Останавливает выполнение программы и возвращает управление операционной системе. RunError Останавливает выполнение программы, генерируя ошибку времени выполнения.

Разные процедуры и функции

FillChar(...) Заполняет непрерывную область символьным или байтовым значением. Hi(X) Возвращает старший байт аргумента X.

High(X) Возвращает самое старшее значение в диапазоне аргумента X. Lo(X) Возвращает младший байт аргумента X.

Low(X) Возвращает самое младшее значение в диапазоне аргумента X.

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]