Линейные односвязные списки

Линейные односвязные списки используют чаще других списковых структур, так как они сравнительно просты, но одновременно в отличие от одномерных массивов позволяют:

· работать с произвольным количеством элементов, добавляя и удаляя их по мере необходимости;

· осуществлять вставку и удаление записей, не перемещая остальных элементов последовательности.

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

Рассмотрим более подробно, как выполняются основные операции с ли­нейными односвязными списками.

Исходные установки. В начале программы необходимо описать эле­мент и его тип:

Линейные односвязные списки - student2.ru

В статической памяти описываем переменную-указатель списка и не­сколько переменных-указателей, используемых при выполнении операций со списком:

Линейные односвязные списки - student2.ru

Добавление нового элемента к списку. Добавление элемента к списку включает запрос памяти для размещения элемента и заполнение его инфор­мационной части. Построенный таким образом элемент добавляется к уже существующей части списка.

В общем случае при добавлении элемента к списку возможны следую­щие варианты:

· список пуст, добавляемый элемент станет единственным элементом списка;

· элемент необходимо вставить перед первым элементом списка;

· элемент необходимо вставить перед заданным (не первым) элементом списка;

· элемент необходимо дописать в конец списка.

Добавление элемента к пустому списку состоит из записи адреса эле­мента в указатель списка, причем в поле «адрес следующего» добавляемого элемента необходимо поместить nil:

Линейные односвязные списки - student2.ru

На рис. 7.10 показана последовательность операций при добавлении элемента к пустому списку.

Линейные односвязные списки - student2.ru

Добавление элемента перед первым элементом списка. При выполнении этой операции необходимо в поле «адрес следующего» переписать адрес первого элемента списка, а в указатель списка занести адрес добавляемого элемента (рис. 7.11):

Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Добавление элемента перед заданным (не первым). Для выполнения операции необходимо знать адреса элементов, между которыми вставляется элемент, так как адресные части этих элементов при выполнении операции будут корректироваться (рис. 7.12). Пусть f - адрес предыдущего элемента, а n - адрес следующего элемента, тогда:

Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Добавление элемента в конец списка. В этом случае должен быть извес­тен адрес элемента, после которого добавляется новый элемент (рис. 7.13): Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Анализ показывает, что этот случай можно свести к предыдущему, так как адресная часть последнего элемента содержит nil:

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

Пример 7.2. Разработать программу, которая строит список по типу сте­ка из целых чисел, вводимых с клавиатуры. Количество чисел не известно, но отлично от нуля. Конец ввода - по комбинации клавиш CTRL+Z (конец файла на устройстве ввода).

Обычно построение списка по типу стека выполняется в два этапа: в список заносится первый элемент, а затем организуется цикл добавления элементов перед первым:

Линейные односвязные списки - student2.ru

Просмотр и обработка элементов списка. Просмотр и обработка эле­ментов списка выполняется последовательно с использованием дополни­тельного указателя:

Линейные односвязные списки - student2.ru

В качестве примера рассмотрим вывод на экран элементов списка:

Линейные односвязные списки - student2.ru

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

Линейные односвязные списки - student2.ru

Удаление элемента из списка. При выполнении операции удаления также возможно четыре случая:

· удаление единственного элемента;

· удаление первого (не единственного) элемента списка;

· удаление элемента, следующего за данным;

· удаление последнего элемента.

Удаление единственного элемента. После удаления единственного эле­мента список становится пустым, следовательно при выполнении этой опе­рации необходимо не только освободить память, выделенную для размеще­ния элемента, но и занести nil в указатель списка first (рис. 7.14):

Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Удаление первого (не единст­венного) элемента списка. Удале­ние первого элемента состоит из со­хранения адреса следующего эле­мента в рабочей переменной £ ос­вобождения памяти элемента и за­писи в указатель списка сохранен­ного адреса следующего элемента (рис. 7.15):

Линейные односвязные списки - student2.ru

Удаление единственного элемента и первого элемента в программе мож­но объединить:

Линейные односвязные списки - student2.ru

Удаление элемента, следующего за данным (не последнего). Удаление элемента, следующего за данным, требует запоминания адреса удаляемого элемента, изменения адресной части данного элемента и освобождения па­мяти (рис. 7.16). Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Линейные односвязные списки - student2.ru

Удаление последнего элемен­та. Удаление последнего элемен­та отличается только тем, что в поле «адрес следующего» задан­ного элемента записывается кон­станта nil:

Линейные односвязные списки - student2.ru

Удаление последнего эле­мента можно свести к удалению элемента, следующего за дан­ным, так как адресная часть уда­ляемого элемента равна nil.

Комбинируя приемы удале­ния, мы также можем организо­вать любую дисциплину удале­ния.

Пример 7.5. Разработать программу, которая удаляет из списка все элементы меньше за­данного значения к.

Удаляемые значения могут располагаться в списке на любом месте, следовательно, возможны все четыре варианта удаления элемента, которые сводятся к двум случаям:

•удаление единственного элемента и удаление записей из начала списка-удаление из нача­ла списка;

• удаление средних и последнего элементов - удаление не из начала списка. Для разделения этих двух случаев введем специальный признак «удаление из начала», который в начале установим равным true, а затем, как голько в списке будет оставлен хотя бы один элемент - изменим на false.

Линейные односвязные списки - student2.ru

Лекция 11. Интегрированная среда разработки Delphi

1. Исторический аспект развития систем визуального программирования.

2. Общая характеристика системы программирования Delphi.

3. Интегрированная среда разработки Delphi.

3.1. Главное меню.

3.1.1. Структура меню.

3.1.2. “Горячие” клавиши команд меню.

3.2. Палитра компонентов.

3.2.1. Виды компонентов Delphi.

3.2.2. Структура палитры компонентов.

3.3. Редактор формы.

3.3.1. Правила размещения компонентов.

3.3.2. Правила выделения компонентов.

3.3.3. Правила изменения размеров компонентов.

3.3.4. Правила перемещения компонентов.

3.3.5. Контекстное меню редактора форм.

3.4. Инспектор объектов.

3.5. Дерево объектов.

3.6. Редактор кода.

Доп-но: [2, § 2.1, 2.3, 2.5].

Сам-но: [2, § 1.2, 1.5, 2.4, 2.6, 2.7]

1. Исторический аспект развития систем визуального программирования

Переход от ОС DOS к ОС Windows потребовал разработки новых технологий создания ПО – технологий визуального программирования.

Первая система визуального программирования Visual Basic была создана компанией Microsoft для языка программирования Basic. Для решения задач профессионального программирования фирмой Borland (Inprise) были созданы системы программирования Delphi (язык Object Pascal) и С++Builder (язык C++). В настоящее время создано большое количество систем визуального программирования: Embarcadero RAD Studio, Microsoft Visual Studio, Qt Creator, Eclipse, JBuilder, Kylix и др.

Преимущество систем визуального программирования: 1) сокращение времени разработки графического интерфейса и объёма кода ПО путём наглядного конструирования интерфейса, изменения свойств компонент и задания обработчичов событий; 2) наличие библиотек готовых компонент, в том числе для работы с любыми СУБД, Internet; 3) возможность разработки и внедрения пользовательских классов, библиотек, создании кросс-платформенных приложений и др.

2. Общая характеристика системы программирования Delphi

Delphi является системой визуального программирования, которая включает набор инструментов для скоростной разработки приложений (RAD – Rapid Application Development).

Delphi использует язык Object Pascal и поддерживает такие концепции объектно-ориентированного программирования как инкапсуляция, наследование, полиморфизм и управление событиями.

Delphi имеет библиотеку визуальных компонентов (VCL – Visual Component Library), которая включает кнопки, поля редактирования, меню, таблицы, графические объекты, компоненты управления данными, файлами, мультимедиа, диалоги и т.д.

Delphi позволяет разрабатывать приложения для работы с локальными и сетевыми БД, Internet, создавать распределённые, кросс-пратформенные приложения и др.

3. Интегрированная среда разработки Delphi

Структура интегрированной среды разработки (IDE – Integrated Development Environment) Delphi:

1. Главное меню (System Menu) и панель с кнопками быстрого доступа (Speed Bar).

2. Палитра компонентов (Component Palette).

3. Редактор (конструктор) форм (Form Designer).

4. Редактор кода (Editor Window).

5. Инспектор объектов (Object Inspector).

6. Дерево объектов (Object TreeView).

3.1.1. Структура Главного меню.

File (файл):

New Application – создать новый проект (приложение).

New Form – создать новую форму (при этом создается и текстовый модуль).

New Unit – создать новый модуль с текстом программы.

Open – открыть файл. Если модуль описывает форму, то эта форма тоже появится на экране.

Open Project – открыть ранее созданный проект.

Reopen – переоткрыть ранее созданный проект из списка последних открытых файлов.

Save – сохранить модуль.

Save As – сохранить модуль как.

Save Project As – сохранить проект как.

Save All – сохранить все.

Close All – закрыть проект.

Use Unit – связать активный модуль с другим модулем проекта.

Edit (редактирование) – операции с буфером обмена, средства для изменения размеров, порядка создания, выравнивания размещенных компонентов на форме.

Search (поиск) – контекстный поиск и замена.

View (просмотр) – вывод на экран различных окон проекта.

Project – работа с проектом.

Run – исполнение и отладка программы.

Component – создание и установка новых компонентов.

Database – мастер создания баз данных.

Tools – инструменты, опции проекта, конфигурация.

Help – помощь.

3.1.2. “Горячие” клавиши команд меню.

F1 – помощь (в т. ч. и контекстная).

Ctrl+S – сохранить текущий файл модуля.

Shift+Ctrl+S – сохранить всё.

Ctrl+F11 – открыть файл проекта (Shift+F11 – добавить файл в проект).

F11 – переключение между инспектором объектов и формой/файлом модуля.

F12 – переключение между формой и соответствующим ей файлом модуля.

Ctrl+F12 – просмотреть список файлов модулей проекта.

Shift+F12 – просмотреть список форм проекта.

Ctrl+F9 – компилировать и скомпоновать приложение.

F9 –создать и запустить приложение.

F4 –выполнение программы до местоположения курсора.

F7 –пошаговое выполнение подпрограммы с заходом в функции.

F8 –пошаговое выполнение подпрограммы без захода в функции.

Ctrl+F2 – прервать выполнение программы.

Ctrl+F5 – добавить переменную в окно просмотра.

Ctrl+F7 – редактировать значение переменных.

3.2. Палитра компонентов.

Системы визуального программирования изначально включают наиболее часто используемые компоненты: формы, меню, метки, поля редактирования, кнопки, переключатели и т.д.

Назначение палитры компонентов Delphi: отображает библиотеку визуальных компонентов VCL, пиктограммы которых скомпонованы по разделам.

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

3.2.1. Виды компонентов Delphi.

Все компоненты можно разделить на:

1. визуальные – видимые в ходе выполнения приложения (меню, кнопки); отображаются на экране точно таком же виде, как и при разработке в период проектирования.

2. невизуальные – выполняющие те или иные служебные функции (таймеры, буферы, диалоги); при проектировании отображаются на форме в виде пиктограмм, во время работы приложения не видны.

3.2.2. Структура палитры компонентов (основные компоненты).

Standard – стандартная, содержит наиболее часто используемые компоненты: MainMenu – главное меню, PopupMenu – выпадающее (контекстное) меню, Label – текстовая метка, Edit – однострочное поле редактирования, Memo – простой текстовый редактор, Button – кнопка, CheckBox, RadioButton – переключатели, ListBox – список строк, ScrollBar – полоса прокрутки, Panel – панель и др.

Additional – дополнительная (BitBtn, SpeedButton – дополнительные кнопки, MaskEdit – поля редактирования по шаблону, StringGrid, DrawGrid – таблицы, Image – рисунок, Shape – графические фигуры, Bevel, Splitter – разделители).

Win32 – различного рода элементы управления Windows (PageControl – многостраничное окно, ImageList – список рисунков, RichEdit – улучшенный текстовый редактор, TrackBar – дискретное изменение значения величины, ProgressBar – полоса визуализации прогресса процесса, UpDown – увеличение и уменьшение величины, TreeView – просмотр дерева, StatusBar – полоса состояния, ToolBar – панель инструментов).

Dialogs – системные диалоги (OpenDialog, SaveDialog, FontDialog, ColorDialog, PrintDialog, FindDialog, ReplaceDialog).

System – системная палитра (Timer, OleContainer).

Internet – компоненты для работы с интернет.

Data Access, Data Control, QReport– доступ и управление базами данных, создание отчетов и запросов.

Win 3.1 – компоненты в стиле Win 3.1, оставлены для совместимости.

Samples – примеры.

ActiveX – примеры активных компонентов.

3.3. Редактор формы.

Основным объектом любой программы под Windows является форма – типичное окно Windows. Форма имеет те же свойства, что и другие окна Windows.

Особенности создания графического интерфейса в ИСР: 1) В процессе проектирования результат виден немедленно, без компиляции программы; при этом ИСР внедряет компоненты в форму, то есть автоматически генерирует программный код, описывающий компонент. 2) Описания объектов помещаются в отдельные модули (*.dfm), которые можно редактировать при помощи Редактора кода. 3) Для каждой формы Delphi создает отдельный текстовый модуль, автоматически связывая его с файлом описания класса формы (*.pas).

3.3.1. Правила размещения компонентов.

1. Для помещения компонента на форму необходимо выбрать компонент из Палитры компонентов + ЩЛКМ в том месте, где он должен появиться на форме (при этом левый верхний угол компонента будет привязан к координатам курсора мыши в момент щелчка).

2. Двойной ЩЛКМ на компоненте Палитры приводит к его размещению в центре Редактора формы.

3. Для размещения на форме нескольких копий компонента необходимо при выборе компонента мышью держать нажатой клавишу Shift. Для выхода из этого режима необходимо нажать кнопку со стрелкой в Палитре компонентов.

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

Параметры сетки можно изменить через вкладку Designer окна Environment Options меню Tools. Здесь же можно выключить режим привязки (Snap to Grid), а также режим отображения сетки (Display Grid).

3.3.2. Правила выделения компонентов.

1. Для выделения отдельного компонента необходимо в Редакторе формы ЩЛКМ на нем (или выбрать из списка в Инспекторе объектов или Дереве объектов).

2. Для выделения группы компонентов можно использовать:

§ Сочетание Shift+ЩЛКМ на Редакторе формы (действует как переключатель).

§ При помощи мыши заключить компоненты в рамку (в сочетании с Shift позволяет выделить группы компонентов, размещенные на разных участках формы). При размещении одних компонентов внутри других (например кнопок на панели) необходимо использовать клавишу Ctrl.

§ Пункт меню Edit®Select All выделяет все компоненты.

§ Сочетание Ctrl+ЩЛКМ в Дереве объектов (действует как переключатель).

Активный компонент окружен черными маркерами; группа активных компонентов – серыми маркерами.

3.3.3. Правила изменения размеров компонентов.

Помещаемые на форму компоненты имеют стандартные размеры (например, Button имеет размер 75х25 пикселей, Image – 105x105).

Изменить размер компонента (или группы компонентов) можно:

1. При помощи мыши. После размещения компонента необходимо захватить один из маркеров и протягиванием установить нужный размер. В процессе размещения компонента необходимо ЩЛКМ в том месте, где должен находиться левый верхний угол компонента и протягиванием установить нужный размер.

2. При помощи клавиатуры. Сочетание Shift+стрелки изменяет размеры одного или группы компонентов на 1 пиксель.

3. Через Инспектор объектов, изменяя значения соответствующих свойств (Width – ширина, Height – высота).

4. Через контекстное меню Редактора форм (ЩПКМ®Position®Size или Scale).

5. Программным путём.

3.3.4. Правила перемещения компонентов.

Изменить местоположение компонента (или группы компонентов) можно:

1. При помощи мыши, захватив выделенный компонент/компонеты и перетягивая по Редактору формы.

2. При помощи клавиатуры. Сочетание Ctrl+стрелки изменяет положение выделенного элемента на 1 пиксель. При этом выключается привязка компонента к сетке.

3. Через Инспектор объектов, изменяя значения соответствующих свойств (Left – положение слева относительно левой верхней точки формы, Top – положение справа).

4. Через контекстное меню Редактора форм (ЩПКМ®Position®Aling) или с помощью Палитры выравнивания (View®Alignment Palette).

5. Программным путём.

Для защиты компонентов от перемещения и изменения размеров необходимо использовать пункт меню Edit®Lock Controls.

3.3.5. Контекстное меню редактора форм.

Align To Grid – привязка выделенных компонентов к сетке Редактора форм.

Bring To Front – перемещение выделенных компонентов на передний план.

Send To Back – перемещение выделенных компонентов на задний план.

Revert To Inherited – возвращение к первоначальному виду формы, выбранной из репозитория.

Align– отображение диалогового окна “Выравнивание” (компоненты можно выровнять по левой стороне, по верху, по центру, распределить по вертикали и горизонтали).

Size – отображение диалогового окна “Размер” (увеличить до максимального, уменьшить до минимального, указать размер в пикселях).

Scale – отображение диалогового окна “Масштаб”.

Tab Order – отображение диалогового окна, позволяющего изменить порядок переключения клавишей Tab по элементам интерфейса.

Creation Order – отображение диалогового окна “Порядок создания” невизуальных компонентов.

Add To Repository – помещение формы в репозиторий объектов для их последующего использования.

View as Text – отображение в редакторе кода описания формы в текстовом виде.

3.4. Инспектор объектов.

Инспектор объектов является отдельным окном и предназначен для:

1. Изменения свойств объектов (закладка Properties) и создания обработчиков событий (закладка Events), на которые реагирует объект (форма или любой визуальный/невизуальный компонент).

2. Выбора активного компонента, свойства которого необходимо изменить.

Для изменения свойств компонента его нужно выделить и ввести новое значение свойства (например, можно изменить координаты и размер компонента изменяя свойства Left, Top, Height, и Width).

Для создания обработчика события нужно дважды ЩЛКМ по правую сторону нужного события; соответствующий данному событию код автоматически запишется в Редактор кода и текстовый курсор будет установлен в точку ввода обработчика данного события.

Информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Возможна группировка списка свойств и событий по имени и по категориям и прочие настройки.

3.5. Дерево объектов.

Дерево объектов отображает дерево всех визуальных и невизуальных компонентов, помещенных на Редактор формы, а также различные виды связей между ними: соотношение родительских и дочерних компонентов, связь компонентов через их свойства и др.

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

3.6. Редактор кода.

Редактор кода прежде всего служит для написания текста программы, отображая содержимое соответствующих модулей и других файлов.

Окно Редактор кода имеет две страницы: Code (код) и Diagram (диаграммы), а также изначально содержит окно Исследователя кода (Code Explorer) и окно Сообщений компилятора (Message View).

Страница Code является полноценным текстовым редактором, поддерживающем вызов контекстной справки, работу с текстовыми блоками, контекстный поиск и замену, настраиваемые комбинации клавиш, цветовое выделение строк, создание закладок и др.

Страница Diagram позволяет строить диаграммы, иллюстрирующие взаимоотношения компонентов в приложении.

Строка состояния Редактора кода содержит положение текстового курсора в модуле, флаг модификации кода, флаг режима вставки/замены.

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

В окно Сообщений компилятора выводится список сообщений компилятора о замечаниях (Warning) и ошибках (Error).

Лекция 12. Структура проекта Delphi

1. Структура главного файла проекта.

2. Структура файла модуля.

3. Области видимости и время жизни.

4. Файлы проекта Delphi.

Доп-но: [2, § 1.7, 2.3.1].

Сам-но: [2, § 14.3, 14.4]

1. Структура главного файла проекта

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

Имя главного файла проекта (по умолчанию Project1.dpr) присваивается имени исполняемого файла. Для просмотра текста файла проекта, необходимо выполнить команду View®Units и выбрать нужный модуль.

program Project1; // Обязательный заголовок – имя программы

uses // Модули, загружаемые программой

Forms, // Системный модуль, существенный для Менеджера Проектов => нельзя удалять

Unit1 in 'Unit1.pas' {Form1}, // Модуль формы, комментарий {Form1} существенен

Unit2 in 'Unit2.pas' ; // Модуль приложения

{$R *.RES} // Директива компилятора, связывающая с модулем файл ресурсов проекта

{ Здесь можно поместить объявления локальных типов, классов, констант, переменных, функций, процедур }

Begin

Application.Initialize; // Инициализация приложения

Application.CreateForm(TForm1, Form1); // Создание формы Form1

Application.Run; // Запуск приложения на выполнение

end.

2. Структура файла модуля

Информация о формах Delphi хранится в двух файлах: файле формы (*.dfm) и текстовом файле модуля (*.pas), который отображается в окне Редактора кода. Имена этих файлов одинаковы (по умолчанию – Unit1, Unit2 и т.д.).

Каждый модуль в общем случае имеет структуру:

unit <имя модуля>;

interface // Открытый (внешний) интерфейс модуля

{ Здесь можно поместить списки подключаемых модулей, объявления типов, констант, переменных, процедур и функций, к которым будет доступ их других модулей }

implementation // Реализация модуля

{ Здесь можно поместить списки подключаемых модулей, объявления типов, констант, переменных, процедур и функций, к которым не будет доступа из других модулей. Тут необходимо реализовать все объявленные в разделе interface (или дополнительные, не объявленные) функции и процедуры }

initialization // Не обязательный раздел

{ Здесь помещаются операторы, выполняемые один раз при первом обращении к модулю }

finalization // Не обязательный раздел. Использование не разрешается, если нет initialization

{ Здесь помещаются операторы, выполняемые один раз при любом завершении работы модуля }

end.

Текст модуля с пустой формой по умолчанию имеет такую структуру:

unit Unit1; // Имя модуля

interface // Раздел описаний

uses // Подключаемые модули

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type // Описание класса (типа) формы

TForm1 = class(TForm) // Класс TForm1 наследует базовый класс TForm

private// Закрытый раздел класса

{ Private declarations }

{ Здесь можно поместить объявления переменных, функций, процедур, включаемых в класс формы, но не доступных для других модулей }

public // Открытый раздел класса

{ Public declarations }

{ Здесь можно поместить объявления переменных, функций, процедур, включаемых в класс формы и доступных для других модулей }

end;

Var

Form1: TForm1; // Объявление переменной Form1 (экземпляра формы) типа TForm1

implementation // Раздел реализации модуля

{$R *.DFM} // Директива компилятора, связывающая с модулем файл формы

{ Здесь можно поместить списки подключаемых модулей, объявления типов, констант, переменных, процедур и функций, к которым не будет доступа из других модулей. Тут необходимо реализовать все объявленные в разделе interface (или дополнительные, не объявленные) функции и процедуры }

end.

Когда мы помещаем компонент на форму, Delphi автоматически создает переменную для него и помещает объявление в раздел interface после описания класса формы. Для образования имени переменной используется свойство Name компонента.

Button1: TButton; // Объявление переменной (экземпляра) Button1 типа TButton

При создании обработчика нажатия на кнопку генерируется код:

procedure Button1Click(Sender: TObject); // Объявление обработчика, раздел interface

procedure TForm1.Button1Click(Sender: TObject); // Реализация обработчика, раздел implementation

Begin

end;

3. Области видимости и время жизни

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

Область видимости (область действия) элемента– область программы, в которой на данный элемент можно сослаться; определяется местом объявления элемента.

Время жизни элемента – период времени, в течении которого элемент существует в памяти (от момента создания до уничтожения).

Глобальные элементы– объявляются вне тела любой функции, процедуры, некоторого блока “begin <операторы> end;” в разделе interface. Они находятся в памяти от начала до конца работы программы и доступны для любой функции, процедуры данного модуля или модулей, использующих данный модуль.

Локальные элементы– объявляются внутри тела любой функции, процедуры, некоторого блока, в разделе implementation. Они видимы только в данной функции, процедуре, блоке данного модуля и имеют время жизни, равное времени работы этой функции, процедуры, блока.

4. Файлы проекта Delphi

Любой проект Delphi как минимум включает следующие файлы:

1.Project1.dpr – главный файл проекта. Содержит информацию о формах и модулях проекта, операторы инициализации и запуска программы на выполнение.

2.Unit1.pas – файл модуля. Содержит исходный текст модуля с описанием класса формы.

3.Unit1.dfm – файл формы. Текстовый (или двоичный) файл с описанием настроек формы и компонентов на ней. Каждому файлу формы соответствует определённый файл модуля.

4.Project1.dof – файл параметров проекта. Текстовый файл для сохранения установок параметров проекта (директив компилятора и др.).

5. Project1.res – файл ресурсов проекта. Двоичный файл, содержащий иконки, курсоры и др.

6.Project1.dsk – файл конфигурации окон проекта. Текстовый файл для хранения информации о последнем сеансе работы с проектом (открытых окнах, их размерах и положении).

Три последних файла относятся к управлению проектом и напрямую программистом не используются. Если сохранить проект под другим именем, то изменят название и файлы с расширением res, dof и dsk.

7. *.~dpr, *.~pas, *.~dfm – файлы резервных копий проекта.

8. Project1.exe – исполняемый файл проекта. Является автономным исполняемым файлом.

9. Unit1.dcu – объектный файл модуля. Откомпилированный файл модуля (*.pas), который компонуется в окончательный исполняемый файл.

Наиболее важными файлами являются файлы с расширениями *.dpr, *.pas, *.dfm, *.dof, *.res. Как минимум, именно эти файлы необходимо перенести на другой компьютер, если необходимо продолжить работу с проектом.

Лекция 13. Управление проектом Delphi

1. Меню File.

2. Меню Edit.

3. Меню Search.

4. Меню View.

5. Меню Project и Run.

6. Меню Project | Options.

6.1. Страница Forms.

6.2. Страница Applications.

6.3. Страница Compiler.

6.4. Страница Linker.

6.5. Страница Directories / Conditionals.

6.7. Страница Packages.

7. Меню Tools | Environment Options.

7.1. Страница Preferences.

7.2. Страница Designer.

7.3. Страница Palette.

8. Меню Tools | Editor Options.

8.1. Страница Display.

8.2. Страница Code Insight.

Доп-но: [2, § 2.9].

Сам-но: [2, § 16.1, 16.2].

1. Меню File

New – создать новый объект (проект, форму, фрейм, модуль данных и т.п.).

Open – открыть существующий модуль или проект. Если модуль описывает форму, то эта форма тоже появится на экране.

Open Project – открыть существующий проект или группу.

Reopen – открыть ранее созданный проект из списка последних открытых файлов.

Save As, Save Project As– сохранить модуль или проект под новым именем.

Save All – сохранить текущий проект и все его файлы.

Close – закрыть текущий модуль.

Close All – закрыть проект (это необходимо делать, если включена опция Tools → Environment Options → Preferences → AutoSave Options → Desktop).

Use Unit – связать активный модуль с другим модулем проекта (путем формирования оператора uses).

Exit– выйти из IDE Delphi. Если проект не сохранён, Delphi предложит его сохранить.

2. Меню Edit

Undo – отменить операцию при работе в текстовом редакторе.

Redo – повторить операцию при работе в текстовом редакторе.

Опция Tools → Editor Options → General → Undo After Save – позволяет использовать команду Undo после сохранения.

Cut, Copy, Paste, Delete, Select All– команды применяются как к тексту, так и к визуальным компонентам, расположенным на редакторе форм.

Align To Grid – привязка выделенных компонентов к сетке Редактора форм.

Bring To Front – перемещение выделенных компонентов на передний план.

Send To Back – перемещение выделенных компонентов на задний план.

Align– отображение диалогового окна “Выравнивание” (компоненты можно выровнять по левой стороне, по верху, по центру, распределить по вертикали и горизонтали).

Size – отображение диалогового окна “Размер” (увеличить до максимального, уменьшить до минимального, указать размер в пикселях).

Scale – отображение диалогового окна “Масштаб”.

Tab Order – отображение диалогового окна, позволяющего изменить последовательность смены активных компонентов на форме при нажатии клавиши Tab.

Creation Order – отображение диалогового окна “Порядок создания” невизуальных компонентов.

Flip Children– зеркальное отображение размещения компонентов.

Lock Controls – зафиксировать компоненты (защитить от перемещения и изменения размеров).

3. Меню Search

Find (Ctrl+F) – поиск текста.

Search Again(F3) – повторный поиск с заданными ранее параметрами.

Text to find – определяет строку текста поиска.

Опции:

Case Sensitive – чувствительность к регистру символов.

Wholes words only – поиск слов целиком.

Regular expressions – многократный поиск.

Scope – область поиска (Global – весь текст, Selected Text – выделенный текст).

Directions – направление (Forward – вперед, Backwards – назад).

Find in Files – поиск в файлах.

Replace (Ctrl+R) – поиск и замена текста.

Text to find – определяет текст поиска.

Replace with – текст для замены.

Prompt on Replace – спрашивать при замене.

Replace All – заменить все.

Incremental Searsh – быстрый поиск по вводимым символам.

Find Error – позволяет отследить ошибку времени выполнения программы. Для этого необходимо ввести адрес ошибки и Delphi перейдет в то место программы, где произошла ошибка.

4. Меню View

Project Manager – вызов менеджера проекта, позволяющего переходить между файлами проекта, а также добавлять и удалять файлы проекта.

Object Inspector – активизация Инспектора объектов.

Object TreeView – активизация Дерева объектов.

To-Do List – показать список пралнируемых задач проектирования.

Alignment Palette – палитра выравнивания.

Browser – средство для просмотра иерархии объектов программы, поиска идентификатора в исходных текстах и т.п.

Code Explorer– показать окно исследователя кода.

Component List – показать список компонентов (альтернатива Палитры компонентов). Используется для поиска компонента по имени.

Window List (Alt+0) – показать список открытых окон.

Debug Windows– впомогательное меню отладки программы:

Breakpoint – вызов списка точек останова программы. Точка останова (полоса красного цвета) вводится при нажатии F5 или щелчку мышью слева строки кода в редакторе.

Call Stack – вызов стека вызовов подпрограмм и т.д.

Toggle Form/Unit(F12) – переключение между формой и соответствующим модулем, выбор модуля или формы из списка.

Units – показать список модулей проекта.

Forms – показать список форм проекта.

Наши рекомендации