Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 23
Текст из файла (страница 23)
ml: ...m2:m3: . . .goto m2;goto m3;end;Процедуры и функции где и когда они используютсяПопрактиковавшись в написании текстов программ, вы, вероятно, ощутилинекоторую сложность: очень часто бывает трудно разобраться в тексте программы. Для облегчения написания больших и сложных программ, а также для лучшей их структурированности в языке Delphi существуют важные инструменты процедуры и функции. Процедуры и функции представляют собой во многомсамостоятельные фрагменты программы, которым передается управление.
Позавершении работы процедур и функций управление возвращается основнойпрограмме. Такой подход позволяет в процедурах и функциях (довольно часто ихназывают подпрограммами) реализовать некоторые детали того или иногоалгоритмического действия, поэтому изменение этих деталей, например, впроцессе отладки, как правило, не приводит к изменениям основной программы.Попробуем поближе познакомимся с понятием процедур и функций.Процедурой (Procedure) в Delphi называется особым образом оформленныйфрагмент программы, имеющий собственное имя.
Упоминание этого имени впрограмме приводит к тому, что процедура активизируется, то есть ейпередается управление. Сразу после передачи управления процедуре начинаютвыполняться входящие в нее операторы. После выполнения последнего из нихуправление передается обратно в основную программу, и выполняютсяоператоры, стоящие непосредственно за оператором вызова процедуры. Всевышесказанное иллюстрирует рис. ЗЛО.Процедуры и функции - где и когда они используются•Основная программаbegin•• •Процедуравызов процедуры-|продолжаиивзыпслнения jend;beginend;гРис. 3.10 т Взаимодействие основной программы и процедурыДля обмена информацией между основной программой и процедуройиспользуются один или несколько параметров вызова.
Допускается использоватьпроцедуры и без параметров вызова.Теперь выясним отличие процедуры от функции. Функция (Function)отличается от процедуры тем, что результат ее работы возвращается в видезначения этой функции. Процедура же никакого значения по завершении своейработы не возвращает. Таким образом, вызов функции может использоватьсянаряду с другими операндами при вычислении выражений.В язык Delphi встроен достаточно внушительный набор функций и процедурдля работы с самыми различными типами данных. Такие процедуры и функцииназываются стандартными. Описание некоторых стандартных процедур ифункций для работы с описанными выше типами данных приведены ниже.Некоторые стандартные процедуры и функцииС примерами стандартных функций мы уже сталкивались.
Вспомните, например, преобразование числа в строку - для этого мы использовали функцию I n t T o S t r при программировании для Win32 и функцию T o S t r i n g при программировании для .NET. Эти функции входят в составбиблиотеки среды разработки Borland Delphi 2005. Наличие таких стандартных функций существенно облегчает разработку программ, ведь впротивном случае нам пришлось бы писать подобные функции самостоятельно. Перечень доступных функций зависит от того, какие модули ибиблиотеки вы используете. Поэтому, в зависимости от перечня модулей,которые указаны в секции u s e s , будут доступны те или иные процедуры ифункции.Начнем рассмотрение с математических функций.ГЛАВА 3 • Язык программирования DelphiМатематические функции позволяют выполнять различные вычисления.Некоторые из математических функций приведены в табл.
3.9.Таблица 3.9 т Основные математические функцииФункцияСинтаксисАбсолютноезначениеNETОписаниеWin32СинтаксисОписаниеabs(n)Абсолютноезначение пТожеТожеЛогарифмlogin,m)Логарифм n no основанию пlogN(n,m)Логарифм ш по основанию nНатуральныйлогарифмlog(n)Натуральный логарифм n (логарифмпо основанию е,где е = 2,718281828459)lnXpl(n)логарифм пНатуральныйДесятичныйлогарифмloglO(n)Десятичныйлогарифм пloglO(n)Десятичныйлогарифм пСинусsin(a)Синус угла а, заданногов радианахsin(a)Синус угла а, заданногов радианахКосинусcos(a)Косинус угла а, заданногов радианахcos(a)Косинус угла а, заданногов радианахТангенсtan(a)Тангенс угла а, заданногов радианахtan(a)Тангенс угла а, заданногов радианахАрксинусasin(a)Арксинус а(угол в радианах),синус которого равен аarcsin(a)Арксинус а (уголв радианах), синускоторого равен аАрккосинусacos(a)Арккосинус а(угол в радианах),синус которого равен аarcos(a)Арккосинус а (уголв радианах), синускоторого равен аАрктангенсatan(a)Арктангенс а(угол в радианах),синус которого равен аarctan(a)Арктангенс а (уголв радианах), синускоторого равен аКвадратныйкореньsqrt(n)Квадратныйкорень из пТожеТожеСлучайноечислоnext(n_random)Случайное числов диапазоне0...
(n_random-l)random(n)Случайное числоиз диапазона 0. .пНиже в табл. 3.10 приведены некоторые функции преобразования типов.Таблица 3.10т Основные функции преобразования типовФункцияПреобразованиестроки в целоечисло.NETСинтаксисРезультатToByte(s)Tolntl6(s)Tolnt32(s)Tolnt64(s)Целое значениетипа Byte, I n t l 6 ,Int32, Int64 результатпреобразованиястроки s в числоWin32СинтаксисРезультатStrToInt(s)Целое значениетипа i n t e g e r результатпреобразованиястроки s в числоПроцедуры и функции - где и когда они используютсяWТаблица 3 . 1 0 т Основные функции преобразования типов (окончание).NETФункцияWin32СинтаксисРезультатСинтаксисРезультатПреобразованиестроки ввещественноечислоToSingle(s)ToDouble(s)FloatTolnt(s)Дробное значениетипа r e a l - результатпреобразованиястроки s в числоПреобразованиечисла в строкуToString(s)Дробное значениетипа S i n g l e илиDouble результатпреобразованиястроки s в числоСтрока, параметриспользоватьнеобязательно.При указаниипараметразадается форматотображенияFloatToStr(n)IntToStr(n)Строка, результатпреобразованиячисла пВ табл.
3.11 приведены некоторые функции для работы со строками.Таблица 3.11 т Основные функции для работы со строкамиФункция.NETWin32СинтаксисРезультатСинтаксисРезультатДлина(количествосимволов)строкиs.lengthВозвращаетдлину строки s,результат - целоечислоLength(s)Возвращает длинустроки s, результат целое числоВыделениеподстрокииз строкиs.substring(i,n)Выделяетиз строки sп символов,начиная с i - r oCopy(str,i,n)Выделяет из строки s t rп символов, начинаяс i-roВставкасимволовв строкуs.insert(i,str)Вставляетстроку s t rв строку s,начинаяс i-го символаinsert(str,s,i)Вставляет строку s t rв строку s,начинаясi - r oУдалениесимволовиз строкиs.remove(i,n)Удаляетиз строки sп символов,начиная с i - r odelete(str,i,n)Удаляет из строки s t rп символов, начинаяс i-roЗаменастрочныхсимволовна прописныеs.ToUpperЗаменяет в строке sAnsiUpperCase(s)все строчныесимволы прописнымиЗаменяет в строке sвсе строчные символыпрописнымиЗаменапрописныхсимволовстрочнымиs.ToLowerЗаменяет в строке sвсе прописныесимволы строчнымиЗаменяет в строке sвсе прописныесимволыстрочнымиAnsilowercase(s)ГЛАВА 3 • Язык программирования DelphiДалее в табл.
3.12 приведены основные функции для работы с датой ивременем.Таблица 3 . 1 2 т Функции для работы с датой и временемФункция.NETСинтаксисРезультатWin32СинтаксисТекущая датаdatetime.nowВозвращает дату(структуру d a t e t i m e )dateof(value)d . dayВозвращает текущийдень (1..31) месяцадаты d,dayof(value)Номер днядатыd.dayofyeardayoftheyear(value)Возвращает порядковыйномер дня (1..366)в году даты v a l u eМесяцd.monthmonthof (value)Годd.yearВозвращает порядковыйномер дня (1..366)в году даты dВозвращает месяцуказанной даты dВозвращает годуказанной даты dВозвращает месяцуказанной даты v a l u eВозвращает годуказанной даты v a l u eЧасыd.hourВозвращает часуказанной даты dhourof(value)Возвращает часуказанной даты v a l u eМинутыd.minuteВозвращает минутыуказанной даты dminuteof(value)Возвращает минутыуказанной даты v a l u e•Текущий деньмесяцаyearof(value)РезультатВозвращает дату(структуру d a t e t i m e )Возвращает текущийдень месяца 1 ..31 датыvalueБолее подробную информацию по использованию стандартных функцийможно получить в справочной системе.
Как правило, достаточно ввести любуюиз приведенных функций в строке поиска и вам будет выведен соответствующийэтой группе функций раздел, где подробно описана каждая функция.Как правило, в большинстве случаев стандартных функций не хватает тогда программисту приходится писать функции и процедуры самостоятельно.О том, как это делается, вы узнаете в следующем разделе.Процедуры и функции, определяемые программистомМногие примеры программ, приведенные в книге, достаточно просты, поэтому в таких программах можно обойтись без процедур и функций, определяемых программистом. Однако вспомните, когда мы создавали первые проекты,то уже тогда столкнулись с понятием процедуры обработки события.