- •Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- •Содержание
- •4.1.4 Разработка интерфейса проекта 66
- •5.1.7 Разработка интерфейса проекта 81
- •Введение
- •Лабораторная работа № 1. Знакомство с интегрированой средой разработки (иср)“Delphi 7”
- •Краткие теоретические сведения о иср “Delphi 7”
- •Конструктор стартовой формы
- •Главное окно иср “Delphi 7”
- •Главное меню
- •Панели инструментов
- •Палитра компонентов
- •Окно просмотра дерева объектов
- •Окно редактора кода
- •Закладка редактора кода модуля
- •Закладка редактора кода файла проекта
- •Окно Object Inspector
- •Закладка описания свойств объекта
- •События и процедуры обработки событий
- •Создание простейшего проекта
- •Разработка интерфейса проекта
- •Создание процедуры инициализации приложения
- •Создание процедуры вычисления результата
- •Улучшение проекта
- •Сохранение проекта
- •Продолжение работы с проектом на другом компьютере
- •Содержание отчета
- •Контрольные вопросы и задания
- •Рекомендованая литература
- •Лабораторная работа № 2. Вещественный тип данных. Расчеты по формулам
- •Краткие теоретические сведения
- •Язык программирования Object Pascal
- •Объекты, переменные и константы
- •Классы и типы
- •Объявление объектов и переменных
- •Вещественный тип данных
- •Выражение
- •Стандартные функции для данных вещественного типа
- •Инструкция присваивания
- •Форматирование результатов расчетов
- •Создание проекта «Расчет по формуле»
- •Создание интерфейса
- •Компонент ole-контейнер
- •Компонент Group Box
- •Компонент Memo
- •Завершение работы над интерфейсом
- •Создание процедур обработки событий Процедура очистки протокола
- •Процедура инициализации формы
- •Процедура выполнения расчета по формуле
- •Контольный пример
- •Трассировка процедуры
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованая литература
- •Лабораторная работа № 3. Подпрограммы Краткие теоретические сведения
- •Правила написания подпрограмм
- •Описание процедуры
- •Вызов процедуры
- •Описание функции
- •Вызов функции
- •Способы передачи параметров в подпрограммы
- •Передача параметров по значению
- •Передача параметров по наименованию
- •Расположение подпрограмм
- •Подпрограммы обработки событий класса формы
- •Другие подпрограммы класса формы
- •Размещение подпрограмм в модуле
- •Размещение подпрограмм в других модулях
- •Размещение подпрограмм внутри других подпрограмм
- •Область действия имен
- •Реализация проекта «Процедуры и функции»
- •Создание процедур и функций Процедуры инициализации
- •Процедура считывания коэффициентов уравнения
- •Функция для расчета по формуле
- •Использование дополнительного модуля
- •Завершение работы над проектом
- •Исследование созданного приложения
- •Анализ передачи параметров по наименованию
- •Анализ передачи параметров по значению
- •Содержание отчета
- •Контрольные вопросы
- •Операции над логическими данными
- •Логические выражения
- •Разветвляющиеся алгоритмы
- •Программирование разветвлений Условный оператор if…then…else
- •Оператор варианта case
- •Реализация проекта «Организация разветвлений»
- •Разработка интерфейса проекта
- •Компоненты для работы со списками
- •Процедуры обработки событий выбора из списка
- •Процедуры обработки событий onKeyPress
- •Решение квадратного уравнения
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5. Построение циклов с инструкциями „while” и „repeat”
- •Краткие теоретические сведения
- •Циклические алгоритмы
- •Инструкция while…do
- •Инструкция repeat…until
- •Прерывание цикла
- •Итерационные алгоритмы
- •Пример итерационного алгоритма для вычисления кубического корня
- •Задание для самостоятельной работы
- •Алгоритмы вычисления сумм бесконечных рядов
- •Задание для самостоятельной работы
- •Создание проекта WhileRepeat
- •Разработка интерфейса проекта
- •Компоненты PageControl и TabSheet
- •Компонент CheckBox
- •Создание закладки для вычисления корня
- •Создание закладки для вычисления синуса
- •Создание процедур и функций Процедура для контроля ввода данных
- •Процедура вычисления кубического корня
- •Процедура вычисления синуса
- •Задания для расчетно-графической работы № 2
- •Содержание отчета
- •Контрольные вопросы
- •Целые типы данных
- •Символьные типы данных
- •Ограниченный тип данных.
- •Применение инструкции цикла for
- •Табулирование значений функций
- •Форматирование результатов при выводе таблиц
- •Строки символов
- •Операции над строками
- •Процедура Delete
- •Процедура Insert
- •Функция Pos
- •Функции Trim, TrimLeft, TrimRight
- •Создание проекта «Применение цикла for»
- •Разработка формы «Табулирование функции» Разработка интерфейса
- •Создание вспомогательных процедур и функций
- •Создание процедуры табулирования функции
- •Разработка формы «Таблица “символ-код”» Разработка интерфейса
- •Создание процедуры вывода таблицы символ-код
- •Разработка формы «Обработка последовательностей целых чисел»
- •Разработка интерфейса
- •Создание процедуры обработки последовательности целых чисел
- •Создание многодокументной (mdi)формы
- •Задание для самостоятельной работы
- •Содержание отчета
- •Контрольные вопросы
- •Рекомендованая литература
-
Создание процедуры вычисления результата
Создаваемая процедура должна обеспечить суммирование чисел, записанных в полях редактирования Edit1 и Edit2, и вывод результата в поле Edit3 при нажатии на кнопку «+».
Задача простая, и можно попытаться решить ее следующим образом. Активизируем окно Object Inspector, выбираем компонент btnPlus, открываем закладку Event, находим событие onClick, дважды щелкаем по пустому полю имени процедуры и получаем ее шаблон в редакторе кода.
Рисунок 1.11 – Шаблон процедуры сложения чисел
Теперь остается описать суммирование чисел, записанных в полях редактирования Edit1 и Edit2, и вывод результата в поле Edit3. Можно попытаться описать это следующим образом.
Edit3.text := Edit1.Text + Edit2.Text;
В этой строке мы говорим компьютеру: «Возьми то, что записано в поле Edit1, сложи с тем, что записано в поле Edit2, и результат запиши в поле Edit3».
Но если такая процедура будет выполнена, то мы увидим, что она складывает не числа, а строки символов. Например, если сложить 22 и 33, то получим 2233.
Для того чтобы получить правильный результат необходимо вначале строки преобразовать в числа. Для этого можно использовать стандартную функцию StrToFloat(). В эту функцию строка символов передается как аргумент. Функция преобразует ее в число и возвращает в виде результата. Выражение для сложения чисел введенных в поля Edit1 и Edit2 будет выглядеть так: StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text).
Теперь результат сложения будет числом, но возникает другая проблема. Если мы запишем тело процедуры в таком виде:
Edit3.text := StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text);
то при попытке выполнить сложение получим сообщение об ошибке. Вид окна редактора кода с сообщением об ошибке представлен на рисунке 1.12. Ошибка заключается в том, что мы пытаемся присвоить строке символов значение числа. В языке Паскаль такие присваивания недопустимы. Типы данных слева и справа от знака присваивания должны быть подобными.
Рисунок 1.12 – Окно редактора кода с сообщением об ошибке
Для того, чтобы устранить эту ошибку следует перед присваиванием преобразовать результат сложения чисел в строку символов. Для этого можно использовать функцию FloatToStr(). В результате тело процедуры станет таким:
Edit3.text := FloatToStr( StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));
На этом можно было бы закончить создание процедуры, но приложение с такой процедурой будет часто завершаться аварийно. Происходить это будет в тех случаях, когда пользователь ошибется при вводе исходных данных. Например, вместо цифры введет букву.
Пользователь имеет право ошибаться, но приложение аварийно завершаться не должно, вместо этого оно должно сообщать пользователю о его ошибке и давать возможность ее исправить.
В Delphi такая проблема решается довольно просто. Посмотрите на окончательный вариант процедуры на рисунке 1.13.
В процедуре использована конструкция try … except … end, которая позволяет решить поставленную выше задачу.
Рисунок 1.13 – Окончательный вариант процедуры сложения
При выполнении такой конструкции Delphi будет пытаться выполнить инструкции, записанные между служебными словами try и except. Если проблем при этом не возникнет, то инструкции, записанные между словами except и end, будут проигнорированы. Но если возникает исключительная ситуация, то Delphi не прерывает выполнение приложения, а переходит к выполнению инструкций между словами except и end. В нашем примере, в случае возникновения исключительной ситуации, на экране появится окно с сообщением «Ошибка в исходных данных».
Есть одна особенность в тестировании приложений с обработкой исключительных ситуаций. Если вы запускаете приложение из ИСР, то Delphi обработает исключение раньше вашего приложения, выдаст сообщение об ошибке, и приостановит работу приложения. Для того, чтобы продолжить работу приложения и увидеть его реакцию на ошибку, закройте окно с сообщением ИСР, и вызовите функцию главного меню Run->Run. Приложение продолжит работу, и вы увидите его реакцию на ошибку.
Удобнее тестировать обработку исключений, работая с откомпилированным файлом проекта (.exe файлом), запуская его напрямую.