Исключительные ситуации и надежное программирование

Исключительные ситуации и надежное программирование

Любая программа при своей работе может вызвать исключительную ситуацию.

Это может быть, например, неверный ввод чисел, извлечение корня из отрицательного числа, деление на ноль, нехватка ресурсов (оперативной памяти, дисковой памяти, внешних устройств).

Программист может обрабатывать такие ситуации, используя структуры типа If <ошибка> Then <обработка>

Однако в этом случае алгоритм решения основной задачи обрастает многочисленными проверками и блоками обработки ошибок. Из этой ситуации в Delphi имеется простой и элегантный выход – механизм обработки исключительных ситуаций.

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

 

Этот механизм успешно работает даже тогда, когда исключительную ситуацию генерирует вызываемая подпрограмма, а обрабатывает вызывающая. В итоге удается отделить смысловую часть алгоритмов от обработчиков ошибок; программа становится более простой, понятной и отказоустойчивой.

Для практической реализации механизма обработки исключительных ситуаций в Object Pascal введены специальные языковые конструкции try…except…end, try…finally…end и оператор raise.

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

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

Примеры классов исключительных ситуаций:

EInOutError

ошибка доступа к устройству ввода/вывода, код ошибки в поле ErrorCode

EOutOfMemory

нехватка оперативной памяти

EIntError

общий класс исключительных ситуаций целочисленной арифметики и включает в себя

EDivByZero

деление на ноль

ERangeError

выход за границы диапазона

EIntOverFlow

переполнение

EMathError

общий класс исключительных ситуаций вещественной математике включает в себя

..EInvalidOp

..неверный код операции вещественной математики

..EZeroDivide

..деление на ноль

..EOverFlow

..переполнение

..EUnderFlow

..исчезновение порядка

EInvalidPointer

попытка освободить недействительный указатель

EConvertError

ошибка преобразования данных с помощью функций IntToStr, StrToInt, StrToFloot, StrToDoleTime

EStackOverFlow

переполненного стека

EExternalException

исключительная ситуация ОС, не соответствующая ни одному из стандартных классов

 

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

Type EMathError = Class(Exception);

EInvalidOp = Class(EMathError).

Имена классов исключительных ситуаций принято начинать с буквы Е.

Можно объявить собственный класс исключительной ситуации:

Type

  EMyException = class(Exception)

    MyErrorCode: Integer;

  End.

Обработка исключительных ситуаций

Генерация исключительной ситуации

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

Например: Raise EOutOfMemory.Create(‘нет памяти");

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

Try

..{защищаемые операторы}

except

..{операторы обработки исключительных ситуаций}

end;

Между символами Try и Except помещаются смысловые операторы, которые пишутся для "правильной" корректной работы.

Если при выполнении любого из них возникает исключительная ситуация, то управление передается оператору, следующуму за словом Except.

Операторы между словами Except и End образуют секцию обработки исключительной ситуации. Эта секция пропускается при нормальном выполнении программы.

 

Нормальная ситуация

 

Исключительная ситуация

 

Можно использовать вложенные защитные блоки.

Исключительная ситуация вложенного защитного блока обрабатываются вложенной копией Except…End. Если такая обработка не выполнена, то управление передается внешней секции Except…End.

Распознавание исключительной ситуации

Распознавание класса исключительной ситуации выполняется с помощью конструкции On<класс исключительной ситуации> Do<оператор>. Например:

try {вычисление}

except

..On EZeroDivide Do {обработка /0}

..On EMathError Do {обработка других ошибок веществ. математики}

 

Поиск обработчика исключительной ситуации выполняется последовательно до тех пор, пока класс исключительной ситуации не станет совместимым с классом, указанным в операторе On. После этого выполняется оператор за словом Do и управление передается за секцию Except…End.

Порядок операторов On существенен.

Для отлавливания всех исключительных ситуаций, не описанных в конструкциях On…Do… применяется обработчик по умолчанию (default exception handler). Он записывается в секции Except после всех операторов On и начинается со слова Else.

Пример:

Function StrProc (S: String): Integer;

Begin

..Result := StrToInt(s);

..If (Result<0) Or (Result>100) Then

..Raise EConvertError.Greate(S+" не %");

End;

Function IncProcStr (S: String): String;

Begin

..Try

….Result :=IntToStr(StrToProc(S) + 1);

..Except

….On EConvertError Do Result :="0";

..End;

End;

Возобновление исключительной ситуации

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

Try

Except

..On EZeroDivide Do

..Begin

….…

….Raise;

..End;

End;

Защита выделенных ресурсов от пропадания

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

(выделение ресурса)

Try

..(использование ресурса)

Finally

..(освобождение ресурса)

End;

 

Секция Finally…End называется секцией очистки. Она выполняется во всех случаях. Если в секции Try…Finally генерируется исключительная ситуация, то сначала выполняется секция очистки, а затем управление передается внешнему защищенному блоку.

Этот защищенный блок работает аналогично и при других выходах из него (Break, Continue, Exit).

Аналогично вышесказанному возможны вложенные блоки Try. .. Finally. .. End.

к обработчику искл. ситуации

Нормальный ход вычислений

Возникновение исключительной ситуации

Проект и его отладка в среде Delphi

Создаваемая программа в среде Windows называется приложением (Application). Обычно каждое работающее в данный момент приложение имеет окно на рабочем столе и значок на панели задач (в нижней части экрана).

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

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

главный файл проекта – текстовый файл с расширением DPR;

файл описания формы – двоичный или текстовый файл с расширением DFM;

файл программного модуля – текстовый файл с расширением PAS.

Пример: Project1.DPR; Unit1.pas,Form1.DFM.

Project1.DPR содержит главный программный блок. Он подключает все другие модули и содержит операторы для запуска приложения.

Program Project1;

Uses Forms,

Unit1 in "Unit1.pas" {Form1};

{*.RES} – подключает значок приложения

Begin

  Application.Initialize;

  Application.CreateForm(TForm1, Form1);

  Application.Run;

End.

Unit1.pas содержащий исходный код формы на языке Object Pascal, методы обработки событий, генерируемых формой и ее компонентами.

Unit1

Interface

Uses Windows, Forms;

Type TForm1 = class(TForm)

Button1: TButton;

Private

Public

End;

Var

Form1: TForm;

implementation

{$R *.DFM} подключение двоичного файла формы.

 

Procedure TForm1.Button1Click(Sender: TObject);

Begin

  Edit1.Text := "пример";

End:

Procedure TForm1.Button1Click(…);

Begin

  Close;

End;

 

Файл Form1.DFM содержит описание формы с компонентами, а также содержит начальные значения свойств, установленных с помощью инспектора объектов. В текстовом виде его содержимое имеет следующий вид:

Object Form1: TForm

  Left=200

  Top=108

  Width=435

  Heigtht=300

End.

 

При старте Delphi автоматически создается новый проект, в котором программистом добавляются на форму компоненты и задаются для них обработчики событий. Для сохранения проекта следует выполнить команду главного меню: File-Save All.

Компиляция проекта выполняется по команде Project-Compile (или Ctrl-F9), при этом из каждого программного модуля создается файл с расширением DCU (Delphi Compiled Unit). Затем выполняется сборка проекта из DCU файлов в выполняемый EXE-файл приложения.

Запуск приложения выполняется по команде меню Run-Run (или F9)

Отладка приложений

В разрабатываемой программе могут существовать ошибки. Все возможные ошибки подразделяют на 3 группы:

синтаксические ошибки,

ошибки времени выполнения программы (run time errors),

логические (смысловые) ошибки.

 

Синтаксические ошибки – это ошибки в правилах написания операторов языка Object Pascal.

Например, написано "=" вместо ":=" (т.е. пропущено ":").

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

 

Ошибки времени выполнения проявляются в виде исключительных ситуаций, которые приостанавливают работу приложения.

Например:

Var List : TStringList;

Begin

  List := nil;

  List.Add;

  …

End;

Если это приложение запущено из среды Delphi, то его работа приостанавливается и вам выдается сообщение об этом. Вы можете продолжить работу приложения с помощью команды Run-Run, либо прервать его командой Run-Program Reset (Ctrl-F2)

 

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

средства трассировки;

контрольные точки;

просмотр значений переменных.

 

Средства трассировки. По команде Run-Run to Cursor (F4) программа выполняется до строки, в которой располагается текстовый курсор. По команде Trace Into (F7) программа выполняется по шагам, т.е. трассируется. Если в строке записан вызов подпрограммы, то начинается трассировка этой подпрограммы.

С помощью команды Step Over (F8) можно выполнить строку без захода в вызываемые подпрограммы.

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

С помощью команды Watches в линию View можно открыть окно просмотра переменных. В редакторе можно добавить переменную в окно просмотра с помощью команды AddWatch at Cursor (Ctrl-F5). Существует возможность изменения (модификации) значений переменных с помощью команды Evaluate/Modify. При отладке вложенных и рекурсивных подпрограмм полезно знать всю цепочку вложенных вызовов и значения параметров. Это смотрится в окне Call Stack, выбираем в меню View. Если требуется запускать отлаженные приложения не из среды Delphi, то полезно в определенных точках ставить вызов функции Beep, которая генерирует звуковой сигнал (как и в Post).

Для отладки также можно использовать подпрограмму ShowMessage("строка"), которая в заданных точках позволяет контролировать выполнение программы.Программирование управляющих элементов
окна приложения Windows

Элементы графического интерфейса

Окно приложения Windows может содержать ряд стандартных управляющих элементов. В Delphi эти управляющие элементы задаются как компоненты со страницы Standard, Additional, Win 95, Dialogs. Рассмотрим наиболее употребляемые элементы.

Кнопки

Эти компоненты создают иллюзию нажимающейся кнопки. Стандартная кнопка создается с помощью команды компонента Button, расположенной в палитре компонентов на странице Standard.

Основные его свойства:

Cancel – если True, то кнопка срабатывает по нажатию Esc (кнопка отмены).

Caption – определяет текст на кнопке. Если текст содержит символ &, то он не отображается, а обеспечивает подчеркивание следующего символа. Подчеркнутый символ используется в комбинации с кнопкой Alt для активизации кнопки с клавиатуры.

Default – кнопка ввода, кнопка, которая срабатывает по нажатию клавиши Enter (если True, то кнопка срабатывает по нажатию Enter).

Modal Result – если не равно нулю, то нажатие кнопки обеспечивает закрытие модального окна.

Окна диалога бывают модальные и немодальные.

Модальное окно служит для взаимодействия с пользователем в режиме неделимого действия. Оно не позволяет переключиться на другие окна своего приложения до тех пор, пока работа с ним не будет завершена.

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

Когда пользователь нажимает кнопку с помощью мыши или клавиатуры, в компоненте Button возникает событие OnClick. Определив для него обработчик, можно реализовать ответную реакцию программы.

Кнопки с картинками

На странице Additional расположен компонент BitBtn, который обладает теми же возможностями, что и Button, но кроме текста может содержать небольшой точечный рисунок.

Свойства:

Gryph – картинка на кнопке

NumGryph – количество образов кнопки на картинке. Delphi рисует один из образов в зависимости от состояния кнопки.

Layout – положение картинки относительно текста.

Margin,

Spacing …….

Kind – задает кнопку стандартного вида
       (Ok, Cancel, Close, Help, Yes, No)

 

Украшение окна картинкой выполняется с помощью компонента Image на странице Additional.

 

По кнопке Load можно загрузить:

точечный рисунок (bitmap)

метафайл (metafile)

значок (icon)

 

Текстовые надписи выполняются с помощью компонента Label, со страницы Standard.

Свойства:

Caption – текст надписи

Align – выравнивание компонента

Alignment – расположения текста в компоненте

Transparent – если True, то текст прозрачен

Word-wrap – если True, то с переносом слов

AutoSize – автоматическая подгонка размера

 

Рельефные кнопки и бордюры – с помощью компонента Bevel на странице Additional.

Управляющие элементы для ввода данных

Независимый переключатель CheckBox на странице Standard.

 

Свойства:

State – текст составлен

Caption – текст

Checked – включен ли

 

Зависимые переключатели Radio Button на странице Standard.

 

Группа зависимых переключателей RadioGroup на странице Standard заменяет группу компонентов RadioButton.

 

Свойства

Items – массив надписей.

ItemIndex – номер активного переключателя

 

Однострочный редактор Edit на странице Standard служит для ввода строки текста.

Свойства

PasswordChar – если не #0, то этот символ отображается вместо символов текста;

Text – редактируемый текст.

ReadOnly (False – True) – запрет редактирования; однако можно копировать текст в буфер обмена

 

Многострочный редактор Memo на странице Standard.

Свойства

Scrollbars – видимость полос прокрутки.

WordWrap – перенос слов.

Lines – строка текста (TStrings)

ReadOnly

 

Редактор с шаблоном Mask Edit со страницы Standard позволяет вводить строку разрешенных символов в разрешенных позициях (дата, время, телефон )

 

Кнопки увеличения-уменьшения числовых значений Up Down на странице Standard.

 

Выпадающий список Combo Box страница Standard.

 

Список ListBox

Свойства

Items – элементы списка

ItemIndex – порядковый номер выбранного элемента

Text – текст в строке

 

Страницы с закладкой PageControl на странице Windows 95.

 

Свойства

ActivePage,

Pages – массив страниц (объектов типа TTabSheet)

Page Count. – количество страниц

PageIndex – номер страницы

 

(По правой кнопке включается меню – New Page)

 

Закладки – TabControl – рядом с Page Control. Это одна страница со множеством закладок

 

Свойства

Tabs – массив названий закладок

TabIndex – номер закладки.

Средства работы с базами данных в Delphi

 

В основе работы с базами лежит механизм Borland Database Engine (BDE) – (ядро баз данных), который обеспечивает подключение приложения к базе данных.

База данных (БД) – это множество файлов, предназначенных для хранения информации о некоторой предметной области. Файлы одной базы собираются в одном каталоге, которому назначается сокращенное имя – псевдоним.

Абстрагируясь от формата отдельных файлов, можно считать, что база данных состоит из таблиц. Таблица содержит информацию о множестве идентичных по структуре объектов. Элементами таблицы являются записи. Записи соответствуют строкам таблицы. Число записей произвольно. Записи состоят из полей. Поля соответствуют колонкам таблицы. Каждое поле имеет имя и тип. Структура полей задается жестко при создании таблицы. Между таблицами устанавливаются отношения, поэтому база называется реляционной (от слова relation – отношение).

Для быстрого доступа записи в таблице упорядочиваются по значению одного или нескольких полей. Список полей, задающих порядок записей, называется индексом (Index), а сами поля – ключевыми (Index fields). Один из индексов называется первичным (primary). Значение его должно быть уникально для каждой записи. Остальные индексы являются вторичными (secondary). Они задают альтернативные способы упорядочивания записей и могут быть не уникальными.

Компонент Table обеспечивает доступ к таблице БД.

Компонент DataSource позволяет легко переключать программные средства на обработку другой БД путем его подключения к другой таблице.

Системы, которые обеспечивают доступ к базам данных и управление ими называются системами управления базами данных (СУБД).

Примеры (СУБД): dBase, Paradox, Oracle.

СУБД обеспечивает абстракцию таблиц данных от их физического представления на диске. Таблицы же могут представляться в виде одного или нескольких файлов.

В настоящее время получили распространение СУБД с так называемой архитектурой клиент-сервер. Это InterBase, Informix, Oracle, Sybase.

В архитектуре клиент-сервер СУБД – это сервер, он находится на производительном файловом сервере. Приложение, работающее с данными – это клиент; он выполняется на локальном компьютере. Клиент запрашивает у сервера данные на специальном языке SQL (Structured Query Language).

Приложение языка SQL – это команда запрос серверу выполнить операцию с базой данных, например, произвести выборку (select) или обновление (update) записей. Этот запрос передается по сети серверу БД, который обрабатывает его и возвращает клиенту готовый результат. Пример:

SELEСT * from Orders WHERE CustNo =1221.

 

Существует множество форматов БД. Borland Database Engine (BDF) – это промежуточный слой между файлами баз данных и приложениями, работающими с ними. BDE обеспечивает эффективную поддержку всех наиболее популярных форматов баз данных (Paradox, dBase, Informix, Oracle, Sybase, MS SQL Server).

Программа BDE инсталлируется вместе со средой Delphi и тесно с ней интегрирована.

Соединение с различными базами данных осуществляются с помощью псевдонимов.

Псевдоним – это известное приложению BDE имя БД, с которым BDE ассоциируются параметры, используемые для соединения с базами данных на диске. Это:

тип (формат) БД

маршрут (локальный или сетевой ) к БД

режим открытия и другие параметры

Псевдоним можно создавать с помощью любой из трех утилей:

BDE Configurator (основная функция )

Database DeskTop

Database Explorer

Существуют следующие компоненты для работы с БД :

множество данных (DataSet);

визуальные компоненты БД;

источники данных DataSource.

 

Компонент Table обеспечивает доступ к таблице любой СУБД.

Компонент Query инкапсулирует в себе запрос к БД на языке SQL, результат которого – это логическая таблица, формируемая из строк и столбцов таблиц баз данных.

DBGraph, DBEdit, DBImage, DBCheckBox – и так далее – в основном дублируют известные управляющие элементы диалоговых окон. Отличие в том, что данные для них берутся из таблиц и в таблицы помещаются.

DBSource – играет роль соединителя между данными (БД) и визуальными компонентами.

Типичными операциями над БД являются сортировка по индексу, фильтрация.

 

Перемещение между записями.

Методы

First

Last

Next

Prior

MoveBy(Count) – относительное перемещение

Свойства

BOF и EOF.

OrdersTable.First ……….

 

Редактирование записей выполняется с помощью методов.

Edit

Cancel – отмена

Post

 

Пример:

Edit ;

Field Valises [‘Sole Date"]:=Now ;

Post.

 

Вставка записи производится методом Insert, а удаление – методом Delete

 

Создание отчетов по БД

Отчет – это печатный документ, который содержит выборочную и зачастую обобщенную информацию по базе данных, представленную в дробном для анализа виде.

Для создания отчетов используется компонент QReport, или автономное приложение ReportSmith. Практикум

Техническое обеспечение автоматизированных систем

Цель работы

приобретение навыков получения информации об установленном оборудовании и установки режимов функционирования технических устройств компьютера.

Порядок выполнения

1. Одним из способов открыть "Панель управления"

а) Кнопка "Пуск на панели задач" – "Настройка" – "Панель управления"

б) Пиктограмма "Мой компьютер" на "Рабочем столе" – "Панель управления"

2. Открыть компонент "Система", посмотреть и выяснить

а) конфигурацию системы и компьютера

б) список установленного в системе оборудования

в) драйверы управления этими устройствами

г) используемые в системе профили оборудования

д) параметры системы на вкладке "Быстродействие"

3. Открыть компонент "Клавиатура" и выяснить

а) тип используемой клавиатуры

б) используемые языки

в) способ переключения раскладки клавиатуры

г) основной язык

4. Открыть компонент "Мультимедиа" и выяснить

а) какие устройства мультимедиа установлены на компьютере

б) параметры имеющихся устройств и драйверов к ним

в) возможности настройки мультимедиа- компонентов

5. В компоненте "Мышь" изучить

а) конфигурацию кнопок мыши

б) изменение скорости двойного нажатия (и протестировать)

в) схемы указателей мыши

г) изменение скорости перемещения указателя (и протестировать)

6. В разделе "Принтеры" выяснить

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

б) какой из установленных принтеров используется для печати по умолчанию

в) имеются ли в очереди какие-либо печатаемые документы

д) ТОЛЬКО ПО СОГЛАСОВАНИЮ С ПЕРСОНАЛОМ УЧЕБНОЙ
    ЛАБОРАТОРИИ
    установить другой принтер и сделать его используемым по умолчанию

е) отправить на печать какой-либо документ и посмотреть очередь печати принтера

ж) отменить печать текущего документа

з) очистить очередь печати принтера

7. С помощью компонента "Управление электропитанием" изучить используемую в данной системе схему управления электропитанием и выяснить моменты отключения дисплея и дисков

8. Оформить отчет.

Содержание отчета

  1. Общие сведения о системе: тип процессора, объем памяти, наименование и версия используемой операционной системы.
  2. Список имеющихся в системе устройств и их характеристики.
  3. Используемые драйверы управления основными устройствами.
  4. Установленные в системе принтеры; какой из них используется по умолчанию.
  5. Конфигурация мыши и клавиатуры.
  6. Конфигурация видеосистемы.
  7. Используется ли на компьютере управление электропитанием. Если да, то указать схему управления.
  8. Выводы и заключение.

Программная среда Турбо-Паскаль

Цель работы

Приобретение навыков работы в среде Турбо-Паскаль: установка, настройка минимальной конфигурации под DOS, выполнение отладки примеров программ, пошаговый режим, просмотр переменных, стека и регистров.

Порядок выполнения

1. Запустить окно DOS из меню "Пуск"-"Программы".

2. Скопировать архив BP71.rar и программу архивации RAR.EXE в папку C:\PSAS из папки D:\DISK_A. Перейти в папку C:\PSAS. С помощью архиватора развернуть архив в текущей папке.

3. Выполнить загрузку программной среды: Перейти в папку BP71\BIN и запустить программу TPX.EXE.

4. Открыть меню "options", "directories", посмотреть и установить путь к файлам "units directories" (C:\PSAS\BP71\UNITS).

5. Открыть меню "file", "change dir…" и перейти в папку "examples".

6. По очереди для каждого примера

а) Загрузить текст примера в программную среду

б) Скомпилировать пример.(например, fib8087)

в) Запустить пример в отладочном режиме.

г) С помощью меню "debug" установить режимы просмотра значений переменных, регистров и стека программы.

д) выполнить программу по шагам.

7. Выйти из программной среды ТурбоПаскаль.

8. С помощью архиватора RAR.EXE выполнить архивацию папки EXAMPLES (включая имя папки и подкаталоги) в архив 2_113XXX_Фамилия_дата (например: 2_113018_Иванов_15_сентября).

9. В отчете представить перечень командных строк MS DOS, посланных в режиме командной строки для выполнения задания, названия и краткую аннотацию рассмотренных примеров.

Создание приложения в среде программирования Delphi

Цель работы

Освоение средств быстрого проектирования среды программирования Delphi. Приобретение навыков работы с программными компонентами, их свойствами и методами. Знакомство со средствами отладки пользовательских приложений.