Программирование в среде Delphi
Краткие сведения о структуре языка программирования Delphi. Компоненты и свойства формы разрабатываемого приложения, их значения. Событие и процедура обработки события. Справочная система. Объектно-ориентированная модель программных компонентов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.07.2012 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Изначально Delphi предназначался для программистов-профессионалов, решающих вопросы разработки больших корпоративных информационных систем. Но, как показала практика, данный язык, совершенно неожиданно, стали широко использовать учителя, врачи, преподаватели ВУЗов, бизнесмены, все те, кто используют компьютер с чисто прикладной целью. Оказалось, что при помощи Delphi for Windows можно быстро решить какие-то свои задачи, не привлекая для этого программистов со стороны. В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию из 270 базовых классов. На Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы. Одним из факторов перехода с одного языка программирования на другой должен быть вопрос - сколько будет стоить переподготовка и обучение, сколько времени специалист затратит на овладение продуктом. Ответ здесь получить весьма просто - любой программист на Паскале способен практически сразу профессионально освоить Delphi. Специалисту, ранее использовавшему другие программные продукты, придется труднее, однако самое первое работающее приложение он сможет написать в течение первого же часа работы на Delphi. И, конечно же, открытая технология Delphi является мощным гарантом того, что инвестиции, сделанные в Delphi, будут сохранены в течение многих лет.
Язык программирования Pascal является базовым в большинстве университетов нашей области, в том числе и педагогическом университете. Вследствие этого, практически все учителя информатики владеют основами программирования на языке Pascal. Поэтому, именно Delphi, должен стать базовым языком в школах для изучения объектно-ориентированного программирования.
В нашей школе уже в течение 7 лет в качестве изучаемого языка программирования используется язык Pascal. Этот выбор был сделан неслучайно:
§ во-первых, Pascal признан сам лучшим языком для обучения основам программирования;
§ во-вторых, принципы программирования, заложенные в Pascal, находят свое отражение во всех других языках, значит, изучив Pascal, можно легко перейти к любому другому языку программирования;
§ в-третьих, Pascal изучается в большинстве высших учебных заведений Ярославской области, где обучается большинство наших выпускников.
Естественно, с появлением объектно-ориентированной версии Object Pascal, встал вопрос об изучении основ объектно-ориентированного программирования в школьном курсе. Изучение Delphi в школьном курсе является логическим продолжением непрерывного курса информатики в нашей школе. Овладение основами программирования на Delphi позволит нашим учащимся реализовать свои творческие проекты в соответствии с современными требованиями.
Основным «недостатком» Delphi являются его требования к аппаратной части. Так современная версия данного языка предъявляет следующие требования:
§ процессор не ниже Pentium;
§ оперативная память 32 Mb;
§ жесткий диск 3Gb.
Ранние версии данного продукта не такие требовательные, но они и не обладают всеми возможностями пятой версии.
Delphi. Основные характеристики продукта.
Delphi - это комбинация нескольких важнейших технологий:
§ высокопроизводительный компилятор в машинный код;
§ объектно-ориентированная модель компонентов;
§ визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;
§ масштабируемые средства для построения баз данных;
§ создание Internet приложений.
1. В мире Delphi
1.1 Краткие сведения о структуре языка
Основными символами языка являются:
· символы _ + -
· 26 больших и 26 малых латинских букв A, B, …Y, Z, a, b, …, y, z
· 10 арабских цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
· специальные символы * / = ^ < > () [] {}.,:; ' # $ @
Буквы русского алфавита не входят в состав алфавита языка. Их использование допустимо только в строковых и символьных значениях.
Нет различий при использовании больших и малых букв в записи имен переменных, процедур, функций и меток. Их максимальная длина ограничена 126 символами.
Краткие сведения о структуре программы
Программа, написанная в среде Delphi при помощи языка Object Pascal, всегда состоит из нескольких модулей. Как минимум таких модулей должно быть два. Один модуль всегда является головной программой и имеет название program. Прочие модули играют вспомогательную и зависимую от головной программы или от других модулей роль и называются unit. Минимально структурированная программа имеет один модуль program и один модуль unit. Серьезные программы помимо модуля program могут содержать до нескольких десятков авторских модулей unit и большое количество ссылок на фирменные или разработанные как самим автором, так и другими разработчиками модули unit.
Программа всегда начинает работу с модуля program, активизируя функционирование одного или нескольких зависимых модулей unit. Те в свою очередь могут активизировать другие модули unit и т.д.
Исходный программный текст каждого модуля составляется на языке Object Pascal и помещается в отдельный файл, который всегда имеет расширение .pas. Текст модуля program имеет расширение .dpr.
Полный программный текст любого модуля также имеет свою структуру, которая может включать блоки определения констант, внутренних структур описания типов, тексты процедур, функций и др.
Лексическая структура языка
Строительным материалом для конструирования программного текста модуля являются лексемы - особые языковые конструкции, имеющие самостоятельный смысл. Лексемы строятся при помощи символов алфавита языка. В Object Pascal различают следующие основные классы лексем:
1. Зарезервированные (служебные) слова. Этот класс состоит из слов, построенных только с помощью букв алфавита. Служебные слова можно использовать только по прямому назначению, т.е. так, как их назначение определил разработчик языка. Ни в каком другом виде, например в качестве имен переменных, их использовать нельзя.
Кроме того, нельзя использовать следующие слова, не принадлежащие к этому классу: private, protected, public, published, automated, directives, on, virtual.
2. Идентификаторы (имена). Идентификаторы или имена предназначены для обозначения констант, переменных, типов, процедур, функций, меток. Они формируются из букв, цифр и символа «_» (подчеркивание). Длина имени может быть произвольной, однако компилятор учитывает имена по его первым 63 символам. Внутри имени не должно быть пробелов. Среди программистов установилось хорошее правило, в соответствии с которым имена формируются таким образом, чтобы одновременно выполнять роль комментария, поясняющего назначение имени. Так, в приведенном примере имя переводится с английского как «сохранить в файле». Кроме того, с учетом невозможности вставки внутрь такого имени пробелов, первые буквы слов обычно пишут заглавными, а прочие строчными. Из приведенного примера хорошо видно, что именно такой способ записи наиболее нагляден для визуального восприятия имени. Нередко в качестве заменителя пробела используют символ «_». Однако это удлиняет и без того длинные имена.
3. Изображения. К их числу относятся константы, символьные строки и некоторые другие значения.
4. Знаки операций формируются из одного или нескольких символов по определению действий, связанных с преобразованием данных.
5. Разделители используются с целью большего структурирования модуля, с тем чтобы повысить визуальное восприятие длинных текстов. К их числу можно отнести.
6. Комментарии. Эти лексемы используют для пояснения отдельных фрагментов текста программы. Они представляют собой последовательность символов, заключенную в фигурные скобки {} или в разделители (* и *), а также последовательность символов, расположенных в строке справа от двух следующих друг за другом символов /.
Примеры комментариев:
{Функция вычисления количества дней между двумя датами}
(* Функция вычисления количества дней между двумя датами *)
// Неправильный ответ
7. Пробел. Этот символ не имеет видимого изображения и служит для отделения лексем друг от друга в тех случаях, когда это необходимо. Обычно использование одного или нескольких рядом стоящих пробелов не искажает смысл программы.
1.2 Типы данных
Простые типы данных
· Порядковые типы
· Целые типы
· Символьные типы
· Булевы типы
· Перечислимые типы
· Под диапазонные типы
· Действительные типы
Любой реально существующий тип данных, каким бы сложным он ни казался на первый взгляд, представляет собой простые составляющие, которыми процессор может манипулировать. В Object Pascal эти простые типы данных разбиты на две группы: порядковые, представляющие данные разных объемов, которыми процессор может легко манипулировать, и действительные, представляющие приближенно математические действительные числа. Разделение типов на порядковые и действительные несколько условно. Точно так же простые данные можно было бы разделить на числа и не числа. Однако в языке Object Pascal порядковые и действительные данные трактуются по-разному, и такое разделение даже полезно.
Порядковые типы
Из простых типов данных порядковые - самые простые. В этих типах информация представляется в виде отдельных элементов. Связь между отдельными элементами и их представлением в памяти определяет естественные отношения порядка между этими элементами. Отсюда и название порядковые.
В Object Pascal определены три группы порядковых типов и два типа, определяемых пользователем. Группы - это целые, символьные и булевы типы. Порядковые типы, задаваемые пользователем, - это перечисления и поддиапазоны.
Все значения любого порядкового типа образуют упорядоченную последовательность, и значение переменной порядкового типа определяется его местом в этой последовательности. За исключением переменных целых типов, значения которых могут быть как положительными, так и отрицательными, первый элемент любого порядкового типа имеет номер 0, второй элемент - номер 1 и т.д. Порядковый номер целого значения равен самому значению. Отношение порядка определяет общие для данных всех порядковых типов операции. Некоторые стандартные функции такого вида встроены в Object Pascal. Они представлены в табл. 1.1.
Для всех порядковых типов в Object Pascal существует операция задания типа для преобразования целых значений в значения соответствующих порядковых типов. Если Т - имя порядкового типа, а Х - целое выражение, то Т (X) возвращает значение Т с порядковым номером X.
Программисты, работающие на С и C++, для приращения или уменьшения значений переменных привыкли использовать операторы «++» и» -», возвращающие следующее и предыдущее значения. Программисты Delphi всегда разбивают эти операции на более простые составляющие с помощью функций Pred, Succ. Dec и Inc.
Таблица 1.1. Операции над порядковыми типами
Операция |
Описание |
|
Low (T) |
Минимальное значение порядкового типа Т |
|
High(T) |
Максимальное значение порядкового типа Т |
|
Ord(X) |
Порядковый номер значения выражения порядкового типа. Для целого выражения - просто его значение. Для остальных порядковых типов Ord возвращает физическое представление результата выражения, трактуемое как целое число. Возвращаемое значение всегда принадлежит одному из целых типов |
|
Pred(X) |
Предыдущее по порядку значение. Для целых выражений эквивалентно Х-1 |
|
Succ(X) |
Следующее по порядку значение. Для целых выражений эквивалентно Х+1 |
|
Dec(V) |
Уменьшает значение переменной на 1. Эквивалентно V:= Pred(V) |
|
Inc(V) |
Увеличивает значение переменной на 1. Эквивалентно V:= Succ(V) |
Целые типы
В переменных целых типов информация представляется в виде целых чисел, т.е. чисел не имеющих дробной части. Определенные в Object Pascal целые типы подразделяются на физические (фундаментальные) и логические (общие). При программировании удобнее использовать логические целые типы, которые задают объем переменных в зависимости от типа микропроцессора и операционной среды таким образом, чтобы достигалась максимальная эффективность. Физические целые типы следует применять лишь в тех случаях, когда в первую очередь важны именно диапазон значений и физический объем переменной. В Object Pascal определены следующие целые типы.
· Integer
· Shortint
· Smallint
· Longint
· Byte
· Word
· Cardinal
Обратите внимание, что один из этих целых типов назван именно целым (integer). Это может иногда приводить к путанице, но мы легко сможем ее избежать, применяя термин целый к группе типов, a integer - к конкретному типу, определяемому в программе этим ключевым словом. Переменные физических целых типов имеют разные диапазоны значений в зависимости от того, сколько байтов памяти они занимают (что равно значению, возвращаемому функцией SizeOf для данного типа). Диапазоны значений для всех физических типов перечислены в табл. 1.2.
Таблица 1.2. Физические целые типы
Тип |
Диапазон значении |
Физический формат |
|
Shortint |
-128-127 |
8 бит, со знаком |
|
Smallint |
-32 768-32 767 |
16 бит, со знаком |
|
Longint |
-2 147 483 648-2 147 483 647 |
32 бит, со знаком |
|
Byte |
0-255 |
8 бит, без знака |
|
Word |
0-65 535 |
16 бит, без знака |
Диапазоны значений и форматы физических целых типов не зависят от микропроцессора и операционной системы, в которых выполняется программа. Они не меняются (или, по крайней мере, не должны меняться) с изменением реализации или версии Object Pascal.
Диапазоны значений логических целых типов (Integer и Cardinal) определяются совершенно иным образом. Как видно из табл. 1.3, они никак не связаны с диапазонами соответствующих физических типов. Обратите внимание, что в Delphi по умолчанию задано 32-разрядное представление.
Таблица 1.3. Логические целые типы
Тип |
Диапазон значений |
Физический формат |
|
Integer |
-32 768-32 767 |
16 бит, со знаком (SmallInt) |
|
Integer |
-2 147 483 648-2 147 483 647 |
32 бит, со знаком (Longint) |
|
Cardinal |
0-65 535 |
16 бит, без знака (Word) |
|
Cardinal |
0-2 147483647 |
32 бит, без знака (Longint) |
В С и C++ для целых значений определены типы int, short int (или просто short) и long int (или просто long). Тип int из C/C++ соответствует типу Integer из Delphi, a long из C/C++ - Longint из Delphi. Однако Shortint из C/C++ соответствует в Delphi не Shortint, a Smallint. Эквивалент Shortint из Delphi в C/C++ - это signed char. Тип unsigned char в C/C++ соответствует типу Byte из Delphi. В C/C++ существует еще тип unsigned long, аналога которому в Delphi нет.
Над целыми данными выполняются все операции, определенные для порядковых типов, но с ними все же удобнее работать как с числами, а не с «нечисленными порядковыми типами». Как и «живые» числа, данные целых типов можно складывать (+), вычитать (-) и умножать (*). Однако некоторые операции и функции, применяемые к данным целых типов, имеют несколько иной смысл.
Операция |
Результат |
|
Abs(X) |
Возвращает абсолютное целое значение Х |
|
Х Div Y |
Возвращает целую часть частного деления Х на Y |
|
Х Mod Y |
Возвращает остаток частного деления Х на Y |
|
Odd(X) |
Возвращает булево True (истина), если Х - нечетное целое, и False (ложь) - в противном случае |
|
Sqr(X) |
Возвращает целый квадрат Х (т.е. Х*Х) |
Будьте внимательны при перенесении численных выражений из одного языка в другой. В Basic, например, функция SQR вычисляет квадратный корень. В C/C++ целое деление обозначается косой чертой (/). В Delphi косая между двумя целыми даст действительный результат с плавающей запятой.
Символьные типы
Смысл символьных данных очевиден, когда они выводятся на экран или принтер. Тем не менее, определение символьного типа может зависеть от того, что подразумевать под словом символ. Обычно символьные типы данных задают схему взаимодействия между участками памяти разного объема и некоторым стандартным методом кодирования / декодирования для обмена символьной информацией. В классическом языке Pascal не задано никакой схемы, и в конкретных реализациях применялось то, что на том же компьютере мог использовать каждый.
В реализациях языка Pascal для первых микропроцессоров была применена 7-битовая схема, названная ASCII (American Standard Code for Information Interchange - Американский стандартный код для обмена информацией). Эта схема и поныне широко распространена, но информация хранится, как правило, в 8-битовых участках памяти. Дополнительный бит удваивает число возможных представлений символов, но реализации расширенного набора символов ASCII часто бывают далеки от стандарта. В данной версии Delphi определен набор 8-битовых символов, известный как расширенный (extended) ANSI (American National Standards Institute - Американский национальный институт стандартов). Как бы то ни было, символьную схему приходится воспринимать так, как ее воспринимает операционная система. Для оконных операционных систем фирмы Microsoft это схема ANSI, включающая ограниченное число предназначенных для вывода международных знаков. В стремлении же применить более обширный набор международных знаков весь компьютерный мир переходит к 16-битовой схеме, именуемой UNICODE, в которой первые 256 знаков совпадают с символами, определенными в схеме ANSI.
Для совместимости со всеми этими представлениями в Object Pascal определены два физических символьных типа и один логический.
Физические типы перечислены ниже
AnsiChar |
Однобайтовые символы, упорядоченные в соответствии с расширенным набором символов ANSI |
|
WideChar |
Символы объемом в слово, упорядоченные в соответствии с международным набором символов UNICODE. Первые 256 символов совпадают с символами ANSI |
Символьные типы объемом в двойное слово (32 бит) отсутствуют.
Логический символьный тип именуется char. В классическом языке Pascal char - единственный символьный тип. В Delphi char всегда соответствует физическому типу данных AnsiChar. У американских программистов ассоциация символа с однобайтовой ячейкой памяти укоренилась за долгие годы настолько, что им зачастую просто не приходит в голову, что можно использовать другие схемы кодирования. Однако дискуссии по интернационализации программ в Internet и World Wide Web могут существенно изменить их отношение к проблеме объема символьных данных. Применяя логический тип char, следует делать реализации для других микропроцессоров и операционных систем, в которых char может определяться как WideChar. При написании программ, которые могут обрабатывать строки любого размера, для указания этого размера рекомендуется применять функцию SizeOf, не задавая ее жестко постоянной. Функция Ord (С), где С - любая переменная символьного типа, возвращает целое значение, которым символ С представлен в памяти.
Chr (X) |
Преобразует целую переменную в переменную типа char с тем же порядковым номером. В Delphi это эквивалентно заданию типа Char (X) |
|
UpCase |
Преобразует строчную букву в прописную |
Процессор не различает типы char, определенные в C/C++ и Delphi. Однако функционально каждый из этих языков трактует данный тип совершенно по-разному. В C/C++ это целый тип, переменной которого можно присваивать целые значения. Переменной int можно присвоить символьное значение, а переменной char - целое. В Delphi символьные типы жестко отделены от численных. Для присвоения численному значению символьного здесь необходимо воспользоваться функцией Ord. В языке Basic один символ представляется так же, как и строка символов. Функция Chr из Delphi эквивалентна функции CHR$ из Basic. Функция Ord из Delphi, возвращающая код ANSI символьной переменной, подобна функции A3 С из Basic, аргумент которой представляет односимвольную строку.
Булевы типы
На ранней стадии обучения программисты осваивают понятие бита, два состояния которого можно использовать для записи информации о чем-либо, представляющем собой одно из двух. Бит может обозначать 0 или 1, ДА или НЕТ, ВКЛЮЧЕНО или ВЫКЛЮЧЕНО, ВЕРХ или НИЗ, СТОЯТЬ или ИДТИ. В Object Pascal информация о чем-либо, что можно представить как ИСТИНА (True) или ЛОЖЬ (False), хранится в переменных булевых типов. Всего таких типов четыре, и они представлены в табл. 1.4.
Таблица 1.4. Размеры переменных булевых типов
Тип |
Размер |
|
Boolean |
1 байт |
|
ByteBool |
1 байт |
|
WordBool |
2 байт (объем Word) |
|
LongBool |
4 байт (объем Longint) |
По аналогии с целыми и символьными типами, подразделяющимися на физические и логические, естественно предположить, что ByteBool, WordBool и LongBool - физические типы, Boolean - логический. Но в данном случае это не совсем так. Все четыре типа различны. Для Object Pascal предпочтителен тип Boolean, остальные определены для совместимости с другими языками программирования и операционными системами.
Переменным типа Boolean можно присваивать только значения True (истина) и False (ложь). Переменные ByteBool, WordBool и LongBool могут принимать и другие порядковые значения, интерпретируемые обычно как False в случае нуля и True - при любом ненулевом значении.
Булевы типы в Delphi можно сравнить с типом LOGICAL языка FORTRAN. В Basic, С и C++ булевы типы как таковые отсутствуют. Булевы выражения в этих языках применяются точно так же, как во всех остальных, однако результаты этих выражений интерпретируются не как значения отдельного типа, а как целые числа. Как в Basic, так и в C/C++ булевы выражения дают численные результаты, интерпретируемые как False в случае 0 и True - в случае любого ненулевого значения. Это совместимо с порядковыми значениями булевых выражений в Delphi. В C/C++ простые сравнения дают результат 1 (True) или 0 (False). Это эквивалентно булевым значениям Delphi. Только результат сравнения в Delphi выводится как булевый, а не целый. В большинстве случаев типу Boolean из Delphi соответствует тип char в C/C++. В Basic зарезервированы слова TRUE (эквивалентно константе -1) и FALSE (эквивалентно константе 0). В Basic TRUE меньше FALSE, в Delphi, наоборот, False меньше True.
Перечислимые типы
Type enum_type = (first_value, value2, value3, last_value);
Обычно данные перечислимых типов содержат дискретные значения, представляемые не числами, а именами. Тип Boolean - простейший перечислимый тип в Object Pascal. Булевы переменные могут принимать два значения, выражаемые именами True и False, а сам тип определен в Object Pascal так, как будто он объявлен следующим образом:
Type Boolean = (False, True);
С помощью типа Boolean в Object Pascal выполняются сравнения, большинство же перечислимых типов - это просто списки уникальных имен или идентификаторов, зарезервированных с конкретной целью. Например, можно создать тип MyColor (мой цвет) со значениями myRed, myGreen и myBlue (мой красный, мой зеленый, мой синий). Это делается совсем просто:
Type MyColor = (myRed, myGreen, myBlue);
В этой строке объявлены четыре новых идентификатора: MyColor, myRed, myGreen и myBlue. идентификатором MyColor обозначен порядковый тип, следовательно, в синтаксисе Object Pascal можно применять этот идентификатор везде, где разрешены перечислимые типы. Остальные три идентификатора - это значения типа MyColor. Подобно символьным и булевым типам перечислимые не являются числами, и использовать их наподобие чисел не имеет смысла. Однако перечислимые типы относятся к порядковым, так что значения любого такого типа упорядочены. Идентификаторам в списке присваиваются в качестве порядковых номеров последовательные числа. Первому имени присваивается порядковый номер 0, второму - 1 и т.д.
В С и C++ есть тип enema, аналогичный перечислимому типу Delphi. Но в этих языках можно произвольно присваивать идентификаторам постоянные значения. В Delphi же соответствие имен и их значений фиксиро-вано: первому имени присваивается значение 0, каждому последующему - на единицу больше. В С тип enum применяется лишь как средство быстрого определения набора целых постоянных. В C++ объявленные в перечислимом типе идентификаторы можно присваивать только переменным того же типа.
Поддиапазонные типы
Переменные поддиапазонного типа содержат информацию, соответствующую некоторому заданному диапазону значений исходного типа, представляющего любой порядковый тип, кроме поддиапазонного. Синтаксис определения поддиапазонного типа имеет следующий вид:
Type subrange_type = low_value..high_value;
Поддиапазонные переменные сохраняют все особенности исходного типа. Единственное отличие состоит в том, что переменной поддиапазонного типа можно присваивать только значения, входящие в заданный поддиапазон. Контроль за соблюдением этого условия задается командой проверки диапазона (range checking).
Необходимость явно определять поддиапазонный тип возникает нечасто, но все программисты неявно применяют эту конструкцию при определении массивов. Именно в форме поддиапазонной конструкции задается схема нумерации элементов массива.
Действительные типы
В переменных действительных типов содержатся числа, состоящие из целой и дробной частей. В Object Pascal определено шесть действительных типов. Все типы могут представлять число 0, однако они различаются пороговым (минимальным положительным) и максимальным значениями, которые могут представлять, а также точностью (количеством значащих цифр) и объемом. Действительные типы описываются в табл. 1.5.
Таблица 1.5. Действительные типы.
Тип |
Порог |
Максимальное значение |
Количество значащих цифр |
Объем (байт) |
|
Real |
2.9E-39 |
1.7Е38 |
11-12 |
6 |
|
Single |
1.5E-45 |
3.4Е38 |
7-8 |
4 |
|
Double |
5.0E-324 |
1.7Е308 |
15-16 |
8 |
|
Extended |
3.4E-4932 |
1.IE4932 |
19-20 |
10 |
|
Comp |
1.0 |
9.2Е18 |
19-20 |
8 |
|
Currency |
0.0001 |
9.2Е14 |
19-20 |
8 |
Тип Real предназначен для совместимости с ранними версиями Delphi и Borland Pascal. Формат этого типа неудобен для семейства процессоров Intel, поэтому операции с типом Real выполняются несколько медленнее операций над остальными действительными типами. Целые типы представляют целые числа, т.е. числа, дробная часть которых равна нулю. Разница между двумя неодинаковыми целыми числами не может быть меньше единицы. Именно благодаря этому целые числа применяются для обозначения дискретных величин, независимо от того, имеют ли реальные объекты какое-либо отношение к числам. Действительные типы предназначены для представления чисел, которые могут иметь дробную часть, поэтому они полезны для представления величин, которые могут быть довольно близкими, почти непрерывными.
1.3 Некоторые важные понятия
Остановимся на этих понятиях для того, чтобы коротко определить их для понимания большинства примеров, которыми сопровождается материал. Эти компоненты языка имеют исключительную важность, в последующих разделах они будут описаны более подробно.
Ячейка. Этот несколько устаревший, но весьма удобный термин обозначает фрагмент памяти, который можно представить как некий контейнер для хранения данных определенной структуры. Ячейка всегда имеет свое уникальное имя, которое служит адресом, по которому расположены находящиеся в ней данные. Примером ячейки могут служить любые разрешенные имена, например a1, Imk12, Count и т.д. Термин «ячейка» не является языковым термином Object Pascal и используется здесь только для большей наглядности при описании основ языка.
Значение - это постоянная величина или структурный комплекс постоянных величин, выраженных в явном виде. Значение не имеет имени.
Примеры значений:
-55.455051 {обыкновенное вещественное число},
'Расчет посадки с натягом' {строка символов}.
Константа - это ячейка, в которой всегда хранится одно значение. Константы не могут быть изменены в ходе выполнения программы. В этом смысле константа отвечает общепринятому определению постоянной (неизменяемой) величины. Всякая константа должна быть описана, т.е. должно быть явно указано ее значение. Значение константы неявно определяет ее тип.
Необходимо отметить, что в языке существуют так называемые типизованные константы, которые в ходе прохождения программы могут быть изменены. Тип константы указывается в специальной языковой конструкции, начинающейся словом Type (тип).
Переменная - это ячейка, в которой в каждый момент времени хранится одно значение или не хранится ничего. Переменная в любой момент времени может быть изменена программой. Всякая переменная должна быть описана. т.е. должен быть явно указан ее тип. Тип переменной указывается в специальной языковой конструкции, начинающейся словом Var (от английского variable - постоянная).
Тип - это структура и описание множества значений, которые могут быть присвоены переменной.
Оператор присваивания - это команда, предназначенная для изменения содержимого ячейки. С его помощью происходит изменение значения переменной (или типизованной константы).
Синтаксис оператора присваивания:
x:= y; {читается «x присвоить y»}
Здесь x - переменная, y - выражение. Выражением могут быть, в частности, переменная, константа или значение. Последовательность символов»:=» обозначает операцию присваивания, в соответствии с которой сначала вычисляется выражение y, затем получившийся результат в виде значения записывается в переменную x.
2. Программирование в Delphi
2.1 Компоненты формы
Начало работы в Delphi
Вид экрана после запуска Delphi несколько необычен (смотри рисунок 1). Вместо одного окна на экране появляются четыре: главное окно Delphi, окно формы Form1, окно инспектора объектов Object Inspector и окно редактора кода Unit1.pas, которое почти полностью закрыто окном формы.
Рисунок 1
В главном окне Delphi (рисунок 2) находится меню команд Delphi, панель инструментов и палитра компонентов.
Окно формы Form1 представляет собой заготовку (макет) окна разрабатываемого приложения.
Рисунок 2
Первый проект
Для демонстрации возможностей Delphi и технологии визуального проектирования займемся разработкой программы пересчета веса из фунтов в килограммы.
Форма приложения
Работа над новым проектом (так в Delphi называется разрабатываемое приложение) начинается с создания стартовой формы - окна, которое появляется при запуске приложения.
Примечание:
Диалоговое окно программы, которое открывается во время ее работы на этапе разработки программы, называется формой.
Стартовая форма создается путем изменения свойств (характеристик) формы Form1. Свойства формы определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки. Свойства перечислены на вкладке Properties (Свойства) диалогового окна Object Inspector (Инспектор объектов) (рис. 3). В левой колонке находятся имена свойств, а в правой - их значения.
При создании формы в первую очередь следует изменить значение свойства Caption (Заголовок). В нашем примере надо заменить Form1 на Фунты-килограммы. Для этого необходимо щелкнуть мышью поле Caption. В результате в правой колонке, где находится текущее значение (Form1) свойства caption (Заголовок), появится курсор (рис 3). Используя клавишу <Backspase>, удалите Form1 и введите Фунты-килограммы.
Аналогичным образом можно установить значения свойств Height и width, которые определяют высоту и ширину формы. Этим свойствам надо присвоить значения 185 и 290.
Рисунок 3. Замена значения свойства Caption
Размер формы и ее положение на экране, а также размер и положение элементов управления на поверхности формы задаются в пикселах, т.е. точках экрана.
Размер формы можно изменить точно так же, как и размер любого другого окна Windows, т.е. захватом и перемещением (с помощью мыши) границы окна. По окончании перемещения границ автоматически изменятся значения свойств Height и width. Они будут соответствовать установленному размеру формы.
При выборе некоторых свойств, например, свойства Color (Цвет), определяющего цвет фона формы, справа от значения свойства выводится значок стрелка), указывающий на наличие раскрывающегося списка. Щелчок на стрелке раскрывает список допустимых значений свойства, из которого о выбрать нужное значение.
Объекты, в том числе и формы, помимо обычных свойств могут иметь и сложные свойства. Перед именем сложного свойства стоит значок «плюс». При двойном щелчке на имени сложного свойства раскрывается список уточняющих свойств, а значок «плюс» меняется на «минус».
В поле значения сложного свойства Font расположена командная кнопка с тремя точками, при нажатии которой появляется стандартное диалоговое окно Windows, позволяющее выбрать шрифт и задать его параметры.
Большинство свойств определяют внешний вид формы. Свойство Name, определяющее имя формы, используется в программе для управления формой.
В табл. 2.1 приведены измененные свойства формы разрабатываемого приложения (программы перевода фунтов в килограммы). Остальные свойства формы оставлены без изменения и в таблице не приводятся.
Таблица 1. Свойства формы разрабатываемого приложения и их значения
Свойство |
Обозначение |
Значение |
|
Имя формы |
Name |
Form1 |
|
Заголовок |
Caption |
Фунты-килограммы |
|
Высота |
Height |
185 |
|
Ширина |
Width |
290 |
|
Шрифт |
Font. Name |
Arial |
|
Размер шрифта |
Font. Size |
10 |
В табл. 1 приведены значения вложенных свойств Name и size сложного свойства Font. Перед именем вложенного свойства указывается имя свойства, его вмещающего.
После установки значений свойств, перечисленных в табл. 1, форма принимает вид, изображенный на рис. 4.
Рисунок 4
Программа пересчета веса из фунтов в килограммы должна получить от пользователя исходные данные - значение веса в фунтах. В Windows данные с клавиатуры вводятся в поля редактирования. Поэтому в форму надо добавить компонент - поле редактирования.
В Delphi поля редактирования, командные кнопки, поля статического текста и прочие элементы управления, находящиеся в форме, называются компонентами (компоненты формы). В программе форма и компоненты рассматриваются как объекты. Этим можно объяснить то, что окно, в котором находятся свойства компонентов, называется Object Inspector (Инспектор объектов).
Для того чтобы добавить в форму компонент, необходимо в палитре компонентов (рисунок 5) выбрать вкладку, щелкнуть пиктограмму нужного компонента, а затем щелкнуть левой кнопкой мыши в той точке формы, где должен находиться правый верхний угол компонента. В результате в форме является компонент стандартного размера.
Рис. 5. Вкладка Standard палитры компонентов содержит наиболее часто используемые компоненты
Для того чтобы добавить в форму компонент заданного размера, необходимо после выбора пиктограммы нужного компонента поместить курсор мыши в ту точку формы, где должен находиться левый верхний угол компонента Затем следует нажать левую кнопку мыши и, удерживая ее нажатой, переместить курсор в точку, где должен находиться правый нижний угол компонента, и отпустить кнопку мыши. В форме появится компонент нужного размера.
На рис. 6 представлен вид формы после добавления в нее поля редактирования (Edit1). Компонент формы, окруженный восемью маленькими квадратиками (маркерами), называется выделенным (маркированным). Для того чтобы выделить компонент, надо щелкнуть его мышью.
Рисунок 6
Свойства маркированного компонента отображаются в диалоговом окне Object Inspector (Инспектор объектов). В табл. 2 перечислены основные свойства компонента - поле редактирования.
Таблица 2. Свойства компонента поле редактирования
Свойство |
Обозначение |
|
Имя поля. Используется в программе для доступа к содержимому (тексту) поля |
Name |
|
Текст, находящийся в поле ввода-редактирования |
Text |
|
Расстояние от левой границы поля до левой границы формы |
Left |
|
Расстояние от верхней границы поля до верхней границы формы |
Top |
|
Высота поля |
Height |
|
Ширина поля |
Width |
|
Шрифт, используемый для отображения вводимого текста |
Font |
|
Признак наследования свойств шрифта родительской формы |
ParentFont |
Delphi предоставляет возможность изменить размер компонента и его положение на поверхности формы.
Для того чтобы изменить положение компонента, необходимо установить курсор мыши на его изображение, нажать левую кнопку мыши и, удерживая ее нажатой, переместить компонент в нужную точку формы, затем отпустить кнопку мыши. Во время перемещения компонента Delphi отображает текущие значения координат верхнего левого угла компонента (значения свойств Left и Tор).
Для того чтобы изменить размер компонента, необходимо его выделить, установить указатель мыши на один из маркеров, помечающих границу компонента, нажать левую кнопку мыши и, удерживая ее нажатой, изменить положение границы компонента. Затем отпустить кнопку мыши. Во время изменения размера компонента Delphi отображает его текущие размеры: высоту и ширину (значения свойств Height и width).
Свойства компонента так же, как и свойства формы, можно изменить при помощи инспектора объектов. Для того чтобы свойства требуемого компонента отображались в диалоговом окне Object Inspector (Инспектор объектов), необходимо выделить компонент или выбрать его имя в раскрывающемся списке в верхней части этого окна (прямо под заголовком).
В табл. 3 приведены значения свойств поля редактирования, предназначенного для ввода веса в фунтах.
Таблица 3. Значения свойств поля редактирования (Edit1)
Свойство (Name) |
Значение |
|
Text |
||
Top |
48 |
|
Left |
24 |
|
Height |
24 |
|
Width |
121 |
Помимо полей редактирования окно формы должно содержать поясняющий текст: краткое информационное сообщение.
Текст, находящийся в форме, называют меткой. Метка добавляется в форму точно так же, как и поле редактирования. Значок компонента «метка» (буква А) находится на вкладке Standard (Стандартная) палитры компонентов (рис. 3). После того как метка добавлена в форму, можно изменить ее свойства в диалоговом окне Object Inspector (Инспектор объектов).
В форму разрабатываемого приложения надо добавить две метки. Первая метка будет представлять собой информационное сообщение. Вторая метка предназначена для вывода результата пересчета веса из фунтов в килограммы.
После добавления меток и установки значений их свойств, форма разрабатываемого приложения приобретает вид, представленный на рис. 7.
Рисунок 7
Таблица 4. Значения свойств меток Label1 и Label2
Свойство (Name) |
Значение метки Labe1 |
Значение метки Label2 |
|
Caption |
Введите вес в фунтах и щелкните на <Пересчет> |
||
AutoSize |
false |
false |
|
Top |
8 |
96 |
|
Left |
24 |
24 |
|
Height |
33 |
49 |
|
Width |
209 |
121 |
|
Wordwrap |
true |
true |
|
ParentFont |
true |
false |
Свойство ParentFont (Наследование параметров шрифта родительской формы) метки Label2 имеет значение false. Поэтому свойство Font этой метки не наследует значения свойства Font «родителя», в данном случае основной формы. Это дает возможность установить свойства шрифта метки иные, чем у формы. У метки Label1 значение свойства ParentFont оставим без изменения.
Если свойство AutoSize (Автоматический подгон размера) имеет значение true, то Delphi автоматически устанавливает размеры метки в зависимости от количества символов текста метки, используемого шрифта и его размера.
При необходимости расположить текст метки в несколько строк следует свойству AutoSize присвоить значение false и вручную установить значения свойств, определяющих размер метки.
В завершение в форму надо добавить командную кнопку, при щелчке которой будет выполняться пересчет веса в фунтах, введенного в поле ввода, в вес в килограммах.
Кнопка добавляется в форму точно так же, как и другие компоненты. Пиктограмма командной кнопки (в виде кнопки ОК) находится на вклад Standard (Стандартная) палитры компонентов. После добавления командной кнопки в диалоговом окне Object Inspector (Инспектор объект необходимо установить требуемые значения ее свойств, которые представлены в табл. 5.
Таблица 5. Значения свойств командной кнопки Button1
Свойство (Name) |
Значение кнопки |
|
Caption |
Пересчет |
|
Top |
56 |
|
Left |
184 |
|
Height |
25 |
|
Width |
75 |
Окончательный вид формы разрабатываемого приложения пересчета веса из фунтов в килограммы представлен на рис. 8.
Рисунок 8
2.2 Событие и процедура обработки события
Вид созданной формы подсказывает, как работает приложение. Очевидно, что пользователь должен ввести в поле редактирования значение веса в фунтах и щелкнуть на кнопку <Пересчет>. Щелчок на изображении командной кнопки - это пример того, что в Windows называется событием.
Событие - это то, что происходит во время работы приложения в Delphi у каждого события есть имя. Например, щелчок кнопкой мыши - это событие OnClick, двойной щелчок мышью - событие OnDblClick.
Таблица 6. События Windows
Событие |
Происходит |
|
OnClick |
При щелчке кнопкой мыши |
|
OnDblClick |
При двойном щелчке кнопкой мыши |
|
OnEnter |
Перед тем, как элемент управления действительно получает фокус |
|
OnError |
Когда элемент контроля обнаруживает ошибку и не может вернуть информацию об ошибке вызывающей программе |
|
OnExit |
Непосредственно перед тем, как элемент управления теряет фокус |
|
OnKeyDown |
При нажатии клавиши. События OnKeyDown и OnKeyPress - это чередующиеся, повторяющиеся события, которые происходят до тех пор, пока не будет отпущена удерживаемая клавиша. |
|
OnKeyPress |
Когда пользователь нажимает клавишу, которая генерирует печатаемый символ. Может происходить также при одновременном нажатии клавиши печатаемого символа и клавиши <Ctrl>. Не происходит при нажатии клавиш <Tab>, <Enter> и клавиш перемещения курсора. |
|
OnKeyUp |
При отпускании нажатой клавиши |
|
OnMouseDown |
При нажатии кнопки мыши |
|
OnMouseMove |
При перемещении мыши |
|
OnMouseUp |
При отпускании кнопки мыши |
Реакцией на событие должно быть какое-либо действие. Например, реакцией на событие OnClick, произошедшее на кнопке <Пересчет>, должен быть пересчет веса из фунтов в килограммы. В Дельфи реакция на событие реализуется как процедура обработки события. Таким образом, задача программиста состоит в написании необходимых процедур обработки событий. Методику создания подобных процедур рассмотрим на примере процедуры обработки события для командной кнопки.
Сначала необходимо выделить объект, для которого создается процедура обработки события. В нашем примере таким объектом является командная кнопка <Пересчет>. Затем следует выбрать вкладку Events (события) диалогового окна Object Inspector. На вкладке будет отображен список событий, которые способен воспринимать маркированный (выделенный) компонент. Список событий для наше командной кнопки приведен на рисунке 9.
В левой колонке вкладки Events перечислены имена событий, на которые может реагировать маркированный объект. Если для события определена процедура обработки, то в правой колонке рядом с именем события выводится имя этой процедуры.
Рисунок 9
Для того, чтобы создать процедуру обработки события, необходимо выполнить двойной щелчок в поле имени процедуры обработки события (т.е. в правой колонке). В результате откроется окно редактора кода Unit1.pas (в Дельфи) кодом называется текст программы) с шаблоном процедуры обработки события (рисунок 10), который создается в Дельфи автоматически.
Рисунок 10
Дельфи присваивает процедуре обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект, для которого создается процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы - Form1, имя командной кнопки - Button1, а имя события Click.
В окне редактора кода между begin и end можно печатать инструкции языка Object Pascal, реализующие процедуру обработки события. Ниже приведен текст процедуры обработки события OnClick для командной кнопки <Пересчет>:
procedure TForm1. Button1Click (Sender: TObject);
var
f:real; // вес в фунтах
k:real; // вес в килограммах
begin
f:=StrToFloat (Edit1. Text); // перевели содержимое Edit1 в число
k:=f*0.4059;
label2. Caption:=Edit1.text+' фунт (а/ов) это '+
FloatToStr(k)+' килограмм';
end;
[an error occurred while processing this directive]
Программа получает исходные данные из поля редактирования Edit1 путем обращения к свойству Text. Свойство Text содержит строку символов (текст), поэтому в программе для преобразования изображения числа в действительное число используется функция StrToFloat.
Вычисленное значение выводится программой в поле метки Label2 путем присвоения этого значения свойству Caption. Для преобразования действительного числа в его изображение (текст сообщения с результатом пересчета) используется функция FloatToStr.
Редактор кода
Редактор кода Дельфи автоматически выделяет ключевые (зарезервированные) слова языка программирования Object Pascal (begin, end, const, var и другие) полужирным шрифтом, что делает текст программы более выразительным и облегчает восприятие структуры программы.
Помимо ключевых слов редактор кода выделяет комментарии. Как только программист напечатает символ начала комментария (открывающую фигурную скобку - '('), так текст, стоящий после этой скобки, изменит свой вид и станет комментарием. При компиляции комментарии не учитываются, они нужны лишь для тех, кто будет просматривать код. После того как программист введет закрывающую скобку комментария, текст находящийся после этой скобки, приобретет обычный вид.
2.3 Справочная система
Редактор кода снабжен контекстно-зависимой справочной системой, которая во время набора текста программы автоматически выводит справочную информацию о процедурах и функциях языка программирования.
Например, если во время набора текста программы напечатать слово «StrToFloat», которое является именем функции преобразования строки символов в действительное число, и после него поставить открывающую скобку, то на экране появится маленькое окно, в котором будет указан тип параметра функции.
Рисунок 11
Справочная система
При наборе текста программы можно получить справку о конструкции языка программирования, процедуре или функции. Для этого необходимо в окне редактора кода напечатать слово, о котором надо получить справку, затем установить курсор на любую его букву и нажать функциональную клавишу <F1>.
Например, если курсор поместить на слово real нажать <F1>, то на экране появится окно, изображенное на рисунке 12.
Рисунок 12
Существует и другой способ получить справку. Для этого необходимо выбрать команду Index (Предметный указатель) меню Help. В открывшемся диалоговом окне Справочная система: Delphi Help на вкладке Предметный указатель в поле Введите первые буквы нужного слова следует ввести слово, о котором нужно получить справку.
Как правило, с одним словом в справочной системе связанно несколько разделов. Поэтому для получения справки по конкретному разделу необходимо в списке выбрать его название и нажать кнопку <Вывести>.
Сохранение проекта
В терминологии Дельфи проект - это набор файлов, используя которые компилятор создает файл исполняемой программы. Проект включает файл проекта и один или несколько файлов модулей (Unit - модуль).
Файл проекта имеет расширение .dpr и содержит общее описание проекта. Файлы модулей проекта имеют расширение .pas и содержат тексты процедур, функций, описания типов и другую информацию, необходимую компилятору для создания исполняемой программы.
Для того, чтобы сохранить проект необходимо выбрать команду Save Project As (Сохранить проект как) меню File. Если данный проект сохраняется впервые, то в ответ на команду сохранения проекта Save Project As Дельфи сначала выводит диалоговое окно Save Unit As (Сохранить модуль как). (рисунок 13)
Рисунок 13
В этом окне следует выбрать папку, предназначенную для хранения проектов Дельфи. В папке проектов Дельфи следует создать новую, отдельную папку для файлов сохраняемого проекта. Для этого можно нажать на кнопку Создание новой папки в диалоговом окне Save Unit1 As. (Пиктограмма в виде папки со звездочкой).
Заключение
Объектно-ориентированная модель программных компонентов
Основной упор этой модели в Delphi делается на максимальном повторном использовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует.
В стандартную поставку Delphi входят основные объекты, которые образуют удачно подобранную иерархию из 270 базовых классов. На Delphi можно одинаково хорошо писать как приложения к корпоративным базам данных, так и, к примеру, игровые программы. Традиционно в среде Windows было достаточно сложно реализовывать пользовательский интерфейс. Событийная модель в Windows всегда была сложна для понимания и отладки. Но именно разработка интерфейса в Delphi является самой простой задачей для программиста.
Список литературы
1. Зуев В.А. Turbo Pascal 6.0, 7.0. М.: Веста; Радио и связь, 1993. 384 с.
2. Епанишников А.М., Епанишников В.А. Программирование в среде Turbo Pascal 7.0. М.: Диалог МИФИ, 1993. 288 с.
3. Сван Т. Основы программирования в среде для Windows 95. Пер. с англ., Киев: Диалектика, 1996. 480 с.
4. Фаронов В.В. Delphi 4. Учебный курс. М.: Нолидж, 1999. 464 с.
5. Федоров А.Г. Создание Windows-приложений в среде Delphi. М.: ТОО «Компьютер Пресс», 1995. 287 с.
6. Хендерсон К. Руководство разработчика баз данных в Delphi 2. Киев: Диалектика, 1996. 544 с.
7. Шумаков П.В. Delphi 3 и разработка приложений баз данных. М.: Нолидж, 1998. 704 с
8. Справочная система Delphi 5.0 Help.
delphi приложение язык программирование
Размещено на Allbest.ru
Подобные документы
Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).
отчет по практике [1,1 M], добавлен 07.12.2010Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.
презентация [184,3 K], добавлен 18.03.2014Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.
курсовая работа [1,3 M], добавлен 25.11.2014Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.
курсовая работа [40,8 K], добавлен 15.07.2009Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.
курсовая работа [2,2 M], добавлен 20.09.2014Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012Использование объектно-ориентированной методологии при программировании математических процессов. Среда языка программирования Delphi для решения математических задач. Объектно-ориентированные, декларативные и императивные языки программирования.
дипломная работа [1,8 M], добавлен 14.09.2011Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.
курсовая работа [261,1 K], добавлен 25.03.2015