Основы Object Pascal (551739)
Текст из файла
А .В. Старков, А.В.Федоров Современные методы программирования
МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ
(ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
АЭРОКОСМИЧЕСКИЙ ФАКУЛЬТЕТ
Кафедра «СИСТЕМНЫЙ АНАЛИЗ И УПРАВЛЕНИЕ»
А.В.Федоров, А.В.Старков
Программирование на языке Object Pascal
в среде DELPHI
Учебное пособие по дисциплине
«Современные методы программирования»
УТВЕРЖДЕНО
На заседании кафедры
«____»____________2007 г.
МОСКВА 2007
Глава 1
ВВЕДЕНИЕ В Object Pascal
Модуль и его структура
Список uses
Интерфейс
Реализация
Инициализация и завершение
Ключевые слова
Ключевое слово const
Ключевое слово type
Ключевое слово var
Комментарии
Переменные
Типы данных и переменные
Совместимость типов
Знаки операций
Константы
Массивы
Одномерные массивы
Многомерные массивы
Функции Low и High
Динамические массивы
Строки
Короткая строка
Длинная строка
Расширенная строка
Строка с терминальным нулем
Операции со строками
Управляющие символы
Сравнение строк
Строковые функции
Форматирование строк
Множества
Совместимость типов
Указатели
Статические и динамические переменные
Размещение динамических переменных
Разыменование указателя
Прежде чем использовать возможности Delphi, надо познакомиться с основами языка программирования Object Pascal.
Новый термин. Объект и компонент – это фрагменты программы, которые выполняют конкретные функции. (Компонент это объект, но не всякий объект является компонентом).
Объект дает пользователю (программисту, использующему объект) только те функции, которые действительно необходимы; следовательно, использовать объекты достаточно просто. Все внутренние механизмы, знать о которых пользователю необязательно, скрыты. Это и составляет концепцию объектно–ориентированного программирования – ООП.
ООП поддерживает модульный подход к программированию. Функциональность любого компонента может быть расширена с помощью механизма наследования. Важно то, что компоненты скрывают от программиста свою сложность и дают возможность сосредоточиться на главном.
Модуль
Программирование – это нечто большее, чем написание исходного кода. Прежде всего, программирование есть разработка концепции решения задачи, а уже затем – написание исходного кода, выполнение которого и приведет к желаемому результату.
Код, который вы пишете, заносится в текстовый файл. Компилятор преобразует текст в машинный код – последовательность слов, которые «понимает» процессор.
Текстовый файл, который Delphi компилирует в машинный код, называется модулем (unit).
Новый термин. Модуль это текстовый файл, который может быть откомпилирован в модуль машинного кода. Откомпилированный модуль записывается файл с расширением имени DCU.
Любая программа с графическим интерфейсом пользователя (Graphical User Interface, GUI) состоит, как минимум, из двух модулей – модуля проекта и модуля формы.
Модуль проекта содержит код, который обеспечивает подготовку программы к выполнению и затем запускает ее. Файл модуля проекта имеет расширение имени DPR. Исходный код проекта можно просмотреть, выбрав в главном меню команду Project | View Source. Обычно нет никакой необходимости редактировать этот файл. Более того, его нельзя изменять до тех пор, пока вы не разберетесь в деталях. Если вы случайно модифицируете исходный код модуля проекта недопустимым образом, скорее всего программа не будет работать.
Второй тип модулей это модуль формы. Модуль формы содержит исходный код, который отвечает за правильное поведение соответствующего окна в процессе работы программы. Файлы модулей этого типа имеют расширение имени PAS. Именно с модулями форм вы будете иметь дело чаще всего.
Любая программа (проект) в Delphi имеет, по крайней мере, один модуль формы, но их может быть и больше. Например, приложение, которое способно показать сообщение «О программе…» в ответ на команду Help | About будет иметь в своем составе два модуля: модуль формы главного окна и модуль формы информации о программе.
К третьему типу относятся модули, которые содержат только исходный текст. В модулях этого типа размещают объявления типов, констант процедур и функций, которые будут необходимы для реализации алгоритма прикладной программы.
Структура модуля
Структура модуля стандартна. Модуль проекта в Delphi имеет заголовок, состоящий из ключевого слова program, за которым следует имя модуля и блок кода, ограниченный ключевыми словами begin и end. вы можете просмотреть исходный код модуля проекта. Для этого выберите в главном меню View | Project Source. Типичный текст модуля проекта приведен на листинге 1.1.
Замечание. Номера строк на листинге 1.1 добавлены ради наглядности. В исходном тексте строки программ не нумеруются
Листинг 1.1. Стандартный текст модуля проекта Delphi. |
01: program Project1; 02: 03: uses 04: Forms, 05: Unit1 in 'Unit1.pas' {Form1}; 06: 07: {$R *.RES} 08: 09: begin 10: Application.Initialize; 11: Application.CreateForm(TForm1, Form1); 12: Application.Run; 13: end. |
В первой строке ключевое слово program идентифицирует модуль проекта. Его имя (Project1) следует за ключевым словом program. Delphi всегда присваивает проекту имя по умолчанию, но вы можете сохранить проект и под другим именем. Новое имя автоматически заменит собой старое в строке 1).
Со строки 3 расположен раздел, текст которого начинается с ключевого слова uses. Здесь приводится список модулей, которые требуется откомпилировать в порядке их перечисления. Назначение ключевого слова uses более подробно рассмотрено в разделе "Список uses."
В строке 7 вы видите директиву. В данном случае это есть указание подключить файл ресурсов проекта. Назначение файла ресурсов объясняется в разделе "Создание прикладных программ"
В строке 9 записано ключевое слово begin, а в строке 13 – ключевое слово end. Обратите внимание на точку после слова end. Модуль в общем случае может содержать несколько блоков, ограниченных парой «begin – end », но только одно заключительное слово end с точкой.
Код в сроках 10, 11 и 12 выполняет инициализацию программы, создает ее главную форму и запускает программу на выполнение. Вникать в подробности этого кода нет никакой необходимости.
Теперь рассмотрим типовой Pascal–модуль.
В
главном меню выберите команду File | New.
В диалоговом окне New Items найдите значок Unit и дважды щелкните на нем. Delphi создает заготовку нового модуля и помещает ее в окно редактора кода. Текст модуля приведен на листинге 1.2.
Листинг 1.2. Заготовка модуля |
01: unit Unit2; 02: 03: interface 04: 05: implementation 06: 07: end. |
У модулей на листингах 1.1 и 1.2 есть что–то общее.
Во-первых, это имя Unit2 в первой строке (имя модуля создала Delphi). Но код на листинге 1.1 начинается словом program, а здесь – словом unit.
Во–вторых, это слово end в конце. Общим правилом является то что в начале любого Pascal–модуля стоит либо ключевое слово program, либо unit, с помощью которых модулю присваивается то или иное имя, а в конце модуля стоит слово end с точкой.
Код на листинге 1.2 отличается от кода на листинге 1.1 тем что здесь есть разделы, отмеченные ключевыми словами interface и implementation. Любой модуль, который не является модулем проекта, должен иметь раздел интерфейса (interface) и раздел реализации (implementation). Назначение этих разделов мы рассмотрим позже. Другим отличием листинга 1.2 от листинга 1.1 состоит в том, что здесь нет слова begin. Главный модуль программы обязательно содержит блок «begin – end », а обычный модуль – только end с точкой в конце.
Рассмотрим назначение ключевых слов, которые используются в Pascal–модуле.
Список uses
Новый термин. В разделе uses перечислены внешние модули, на которые ссылается данный модуль. Иными словами, данный модуль не удастся откомпилировать без использования модулей, которые перечислены в списке uses.
Обратимся к листингу 1.1. Слово uses в строке 3 открывает список модулей, которые необходимы для выполнения прикладной программы. Например, в строке 11 листинга 1.1 написано:
Application.CreateForm(TForm1, Form1);
В этой строке используются идентификаторы, которые в данном модуле не объявлены. Так, описание процедуры Application.CreateForm находится в модуле с именем Forms.pas, а идентификаторы TForm1 и Form1 описаны в модуле формы приложения Unit1.pas. Видите связь? Список uses сообщает Delphi где искать дополнительную информацию, необходимую для компиляции модуля. Рассмотрим список uses подробнее:
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
В этом списке присутствуют имена двух модулей: Forms и Unit1. В некотором смысле это неудачный пример, поскольку второй модуль описан необычно. Так, его описание содержит дополнительный текст (Unit1 in 'Unit1.pas' {Form1}). Этот текст показывает что модуль содержит описание формы. Такой синтаксис описания применяется только в модуле проекта. Текст в фигурных скобках – это комментарий.
Необходимо запомнить два правила составления списка uses:
• Имена модулей в списке разделяются запятыми.
• Список заканчивается символом «;».
Способ оформления списка не имеет никакого значения. Например, следующие два списка uses абсолютно верны:
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
uses
Windows,
Messages,
SysUtils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls;
ПРИМЕЧАНИЕ: В некоторых случаях Delphi может добавлять ссылки на модули в список uses. Это делается с помощью команды меню File | Use Unit.
Интерфейс
Раздел интерфейса в модуле начинается с ключевого слова interface.
Этот раздел предназначен для объявления идентификаторов, которые «экспортирует» данный модуль. Экспортируемый идентификатор доступен в любом другом модуле проекта, который ссылается на данный модуль в своем списке uses.
Большинство модулей содержат объявления классов, процедур, функций, типов и т.д, которые будут использоваться в других модулях. Любые объекты, которые должны быть доступны другим модулям, следует объявить в разделе интерфейса. Раздел интерфейса заканчивается перед словом implementation.
Реализация
Новый термин: Раздел реализации (implementation) модуля содержит детальный код модуля.
Раздел реализации начинается словом implementation и заканчивается либо итоговым end., либо перед ключевым словом initialization. Ключевое слово initialization используется для создания в модуле раздела инициализации. Пока что мы ограничимся сказанным, ибо прежде чем объяснять тонкости создания модулей необходимо рассмотреть другие аспекты языка Pascal.
Рассмотрим пример, иллюстрирующий использование разделов interface и implementation.
Допустим, нам надо создать модуль с процедурой DoSomething. причем эта процедура должна быть доступна всем модулям проекта. В этом случае мы должны описать процедуру DoSomething в разделе interface и затем написать код этой процедуры в разделе implementation. Вцелом модуль будет выглядеть так, как показано на листинге 1.3.
Листинг 1.3. Модуль с экспортируемой процедурой |
unit Unit2; interface procedure DoSomething; implementation procedure DoSomething; begin { Алгоритм процедуры DoSomething. } end; end. |
Обратите внимание на то, что процедура DoSomething объявлена в разделе интерфейса, а затем определена (т.е. дан ее подробный код) в разделе implementation. Правда, мы несколько опередили события, ибо не объяснили еще ни понятие «процедура», ни понятие «функция». Процедуры и функции мы рассмотрим позже.
Инициализация и завершение
Разделы инициализации и завершения предназначены для размещения в них кода, который должен быть выполнен в начале (initialization) и при завершении работы программы (finalization). Код раздела инициализации выполняется когда модуль загружается в оперативную память. Код раздела завершения выполняется перед выгрузкой модуля из памяти. Модуль может содержать только раздел инициализации, однако раздел завершения может быть только в паре с разделом инициализации. Разделы initialization и finalization в модулях необязательны.
Ключевые слова
Помимо обязательных разделов интерфейса и реализации модуль может содержать ряд других разделов. Каждый раздел начинается тем или иным ключевым словом. Некоторые ключевые слова могут употребляться в различных контекстах (т.е. не только как идентификаторы разделов модуля). Здесь мы рассмотрим как некоторые ключевые слова используются в модулях.
Ключевое слово const
Любой модуль может содержать один и более разделов объявления констант. Такой раздел начинается с ключевого слова const.
Если в программе много раз используется одно и то же численное значение или определенная строка текста появляется в нескольких местах, стоит объявить повторяющееся значение как константу.
Новый термин. Константа – это имя фиксированного значения, на которое вы часто ссылаетесь в своих программах. Объявление константы позволяет обращаться в программе к соответствующему значению по имени вместо написания величины.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.