Решение квадратного уравнения
Задача решения квадратного уравнения, несмотря на кажущуюся простоту, требует детального анализа, и программировать ее в виде одной длинной процедуры нецелесообразно.
При решении подобных многовариантных задач целесообразно, прежде всего, используя метод проектирования сверху вниз, разработать схемы алгоритмов решения всей задачи и подзадач.
Выше уже рассматривались некоторые из этих алгоритмов. На рисунке 4.1 изображен корневой алгоритм решения задачи, в котором анализируется значение коэффициента «а» и, в соответствии с его значением вызывается либо процедура решения линейного уравнения, либо процедура решения квадратного уравнения.
На рисунке 4.2 представлен алгоритм решения линейного уравнения, в соответствии с которым возможно три различных варианта решения.
Схему алгоритма решения квадратного уравнения нужно разработать самостоятельно. Эта схема должна иметь две ветви, одна из которых обеспечивает вычисление и вывод значений вещественных корней, а другая – комплексных корней. Выбор ветви должен производиться на основании значения дискриминанта.
После разработки алгоритмов можно приступить к программированию задачи, причем этот процесс можно реализовать методом восходящего программирования, то есть снизу вверх.
Прежде всего, целесообразно написать функцию вычисления дискриминанта. Можно эту функцию даже расположить в дополнительном модуле, так как она не привязана к форме, и может пригодиться при решении других задач.
После этого можно запрограммировать решение линейного уравнения в соответствии с алгоритмом, представленным на рисунке 4.2. Его следует реализовать в виде процедуры с именем linUr. Это может быть процедура модуля, в которую в качестве параметров передаются коэффициенты «в» и «с». Выводить результаты следует в протокол выполненных расчетов, в качестве которого используется компонент TMemo.
Далее следует запрограммировать решение квадратного уравнения в соответствии с разработанной самостоятельно схемой алгоритма. Алгоритм следует реализовать в виде процедуры с именем kvUr. Это может быть процедура модуля, в которую в качестве параметров передаются коэффициенты «а», «в» и «с». В процедуре следует использовать обращение к написанной ранее функции вычисления дискриминанта. Выводить результаты следует в протокол выполненных расчетов, в качестве которого используется компонент TMemo.
Последней вспомогательной процедурой будет процедура считывания коэффициентов уравнения из компонентов TEdit формы. Процедуру getKoef мы уже использовали в предыдущей работе, подобную процедуру следует написать и в данном проекте.
Выполнив подготовительную работу, можно прейти к написанию процедуры обработки события onClick для кнопки «Найти корни». В этой процедуре следует реализовать алгоритм представленный на рисунке 4.1. Начало процедуры может быть таким же, как и в процедуре расчета по формуле в предыдущем проекте, но затем должно быть организовано разветвление. В ветвях должны быть обращения к процедуре решения линейного уравнения linUr и к процедуре решения квадратного уравнения kvUr.
Завершив написание процедур, проверьте работу проекта для всех контрольных примеров.
- Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- Содержание
- 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)формы
- Задание для самостоятельной работы
- Содержание отчета
- Контрольные вопросы
- Рекомендованая литература