Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 24
Текст из файла (страница 24)
Программа делилась на фрагменты - процедуры обработки того или иного события.Описание процедуры начинается зарезервированным словом procedure. Сразуза этим словом следует имя процедуры и список формальных параметров. Списокпараметров заключается в скобки и для каждого параметра указывается его тип.Зарезервированное слово precedure, имя процедуры и список ее параметровназываются заголовком процедуры, или ее сигнатурой. За заголовком процедурыПроцедуры и функции - где и когда они используютсяследует тело процедуры - описание типов, меток, констант, переменных и,собственно, список операторов, заключенный в конструкцию begin и end:procedure <имя_процедуры>(<список_параметров>) ;type <описание_типов>;label <описание_меток>;const <описание_констант>;var <описание_переменных>;begin// Здесь располагаются операторы процедуры.end ;Пример описания функции приведен ниже.
Заголовок функции начинается сключевого слова function, за которым следует имя функции и список формальныхпараметров, заключенный в скобки. За списком формальных параметров следуеттип возвращаемого значения, отделяемый от скобок двоеточием:function <имя_функции>(<список_параметров>):<тип_возвращаемого_значениямtype <описание_типов>;label <описание_меток>;const <описание_констант>;var <описание_переменных>;begin// Здесь располагаются операторы функции.end ;Как уже было сказано, функция от процедуры отличается тем, что у нее естьвозвращаемое значение.
На самом деле, Delphi кроме всего прочего создает иописывает в функции переменную R e s u l t , по типу данных совпадающую стипом данных, возвращаемых функцией. Таким образом, вы можете какуказывать возвращаемое значение старым образом, как в Паскале, присваиваярезультат имени функции, а можете для этого использовать переменную Result.Теперь скажем насколько слов о списке параметров процедур и функций.
Вобщем виде он выглядит следующим образом:[var I out I const] <имя_параметра> : <тип_параметра>, . . .то есть состоит из списка конструкций описания параметров, перечисленныхчерез запятую. Если посмотрите на этот формат внимательно, то увидите, чтоон очень похож на описание переменных. Действительно, для процедуры илиГЛАВА 3 т Язык программирования Delphiфункции параметры являются локальными переменными, то есть видны тольковнутри нее самой.
Нам осталось разобраться только с модификаторами,которые могут стоять перед параметром (или отсутствовать вообще). Табл. 3.13сделает смысл модификаторов понятным и для вас.Таблица 3.13 т Модификаторы параметров процедур и функцийМодификаторОписание<отсутствует>Значение параметра копируется в локальную переменную.
Вы можете изменятьзаписанное в параметре значение и использовать его в вычислениях, но привыходе из процедуры или функции значение параметра останется таким же,как и при ее вызовеvarВ процедуру или функцию копируется указатель на переданный параметр.При вызове процедуры или функции на месте var-параметра должна бытьпеременная.
При изменении значения параметра в теле процедуры или функциипри возврате из нее в вызвавшую программу вернется новое значениеoutПараметр для возвращаемого значения. При вызове процедуры или функциисодержимое этого параметра будет очищено. В остальном работа out-параметра_ аналогична var-параметруconstДанный тип параметра аналогичен локальной константе. Этот параметр работаетаналогично случаю, когда не указан вообще никакой модификатор,за исключением того, что вы не можете присваивать ему значение в телепроцедуры или функцииЗнакомимся с типовой структуроймодулей на языке DelphiЛюбой модуль (файл с расширением *.pas) на языке Delphi построен по типупроцедуры (иногда его еще называют главной процедурой).
Ниже приведенаструктура типового модуля Delphi. Синтаксис отдельных элементов можетотличаться в зависимости от реализации (например, .NET или Win32), но в тойили иной степени эти разделы присутствуют всегда.Итак, типовая структура модуля (процедуры) на языке Delphi выглядитследующим образом:unit <Имя_программы>;// Далее следует описательная часть модуля - начинается со словаII interface.Interface// Раздел описания используемых модулей - начинается со слова uses.uses <список_используемых_модулей_через_запятую>;// Раздел описания используемых типов данных - начинается со слова11 type.Знакомится с типовой структурой модулей на языке Delphitype <список_используемых_типов>;// Раздел описания констант.const <список_констант>;// Раздел_описания_переменных - начинается со слова var.var <список_переменных>;// Раздел описания заголовков процедур и функций.procedure <имя>function <имя>// Далее следует часть реализации модуля - начинается со словаII implementation.implementation// Часть реализации содержит тексты процедур обработки событий,II а также собственные процедуры и функции программиста.end.Часть реализации содержит тексты процедур и функций, создаваемыхавтоматически средой разработки (процедуры обработки событий), а такжепрограммистом.
В общем случае любая процедура имеет следующую структуру:procedure <имя_процедуры>(<список_параметров>);label <список_меток>,const <список_констант>;type <список_типов>;var <список_переменных>;begin// Операторы процедурыend;Некоторые разделы в процедуре могут отсутствовать (label, const, type,var). Структура функции отличается от процедуры только тем, что имеет взаголовке тип возвращаемого значения:function<имя_функции>(<список_параметров>):<тип_возвращаемого_значения>;label <список_меток>;const <список_констант>;type <список_типов>;var <список_переменных>;begin// Операторы функцииend;Некоторые разделы в функции также могут отсутствовать (label, const,type, var).yijWГЛАВА 3 • Язык программирования DelphiНекоторые советы по оформлениюпрограммного кодаПри оформлении программного кода придерживайтесь следующих правил:> не следует размещать в одной строке более одного оператора.
Это связано с тем, что в случае возникновения ошибок при компиляции не всегдаудается точно идентифицировать место ошибки (ошибочный оператор);>• старайтесь как можно чаще использовать комментарии, желательно - походу составления программы. Довольно часто разработанные ранее программы приходится модернизировать, поэтому пояснение тех или иныхвопросов по ходу текста программы существенно облегчит вам жизнь исэкономит время разработки (доработки) программы;>• анализируя ту или иную ошибку, иногда полезно посмотреть на оператор,предшествующий тому, что вызвал ошибку.
Это также связано с тем, чтокомпилятор далеко не всегда способен точно идентифицировать местоошибки;>• старайтесь выделять тела составных, условных и циклических операторов отступами. Так как зачастую в этих операторах необходимо использовать конструкцию begin...end, то без отступов вы можете забыть, какомуключевому слову begin соответствует ключевое слово end. В результатепри компиляции вполне вероятна ситуация, что количество слов beginне соответствует количеству слов end.
Компилятор в таких случаях выдает два варианта ошибок, означающих избыток или недостаток ключевогослова end:- ' : ' expected but ' . ' found - количество слов begin превышаетколичество слов end;- d e c l a r a t i o n expected b u t i d e n t i f i e r found-количество словend превышает количество слов begin.>• если тело (текст) вашей программы содержит достаточно большое количество строк, а также содержит при этом относительно самостоятельныечасти, то попробуйте структурировать свою программу - используйтепроцедуры и функции.При использовании идентификаторов старайтесь использовать имена,которые наглядно поясняют назначение того или иного идентификатора.Применение «осмысленных» названий идентификаторов сделает вашупрограмму более понятной - куда тяжелее разбирать исходный код программы,где присутствует большое количество идентификаторов типа i, j , к и т.п.Несколько словоб объектноориентированномпрограммированииЗта глава посвящена основам объектно-ориентированного программирования (ООП).
Во время написания книги я постарался построить изложение материала таким образом, чтобы для разработки программ вBorland Delphi 2005 знание концепции ООП не являлось необходимым.Зачем же нужно это самое ООП и действительно ли знать его основы необязательно? Все дело в том, что ООП - результат накопления опыта программирования, собираемого долгие годы, и в настоящее время представляющеесобой мощный инструмент, без которого немыслимо создание ни одной современной программы.
Вполне естественно, что понять то, до чего в свое времядоходили годами, начинающему программист)' будет достаточно сложно.Именно поэтому материал книги построен таким образом, чтобы у человека, только начинающего программировать, в случае затруднения при усвоенииданной главы была бы возможность ее пропустить. В конце концов, немногопопрактиковавшись в программировании, вы так или иначе вернетесь к этойглаве - еще не зная основ ООП, вы интуитивно ощутите эту необходимость.Материал данной главы будет весьма полезен для более глубокого понимания того, как программа взаимодействует с компонентами, что и почему средаразработки добавляет в текст программы.Исторически сложилось так, что программирование возникло и развивалось как процедурное программирование.