- •Программирование на языке с в среде Borland 3.1
- •Введение
- •Особенности решения вычислительных задач на эвм
- •1. Назначение и общая характеристика языка программирования с
- •2. Пример простейшей программы
- •2.1 Приступим
- •2.2 Расширяем функциональность
- •2.3 Улучшаем интерфейс. Осмысленное проектирование
- •2.4 Итог
- •3.2 Лабораторная работа №2. Решение квадратного уравнения Задание
- •Методические указания
- •3.3 Лабораторная работа №3. Попадание точки в область Задание
- •Методические указания
- •3.4 Лабораторная работа №4. Цикл с неизвестным числом повторений Задание
- •Методические указания
- •3.5 Лабораторная работа №5. Обработка массивов Задание
- •Методические указания
- •3.6 Лабораторная работа №6. Обработка файлов Задание
- •Методическое указание
- •3.7. Лабораторная работа №7. Работа со строками Задание
- •Методическое указание
- •4. Проект программы и функции оболочки Borland c
- •4.1 Создание проекта программы. Borland c и его основные режимы с характерными окнами
- •4.2. Функции оболочки Borland c
- •5.1 Основные символы схем алгоритмов
- •О кончание
- •П роцесс
- •Предопределенный процесс
- •6. Содержание отчета
- •6.1 Требования к оформлению отчёта о лабораторной работе
- •6.2 Требования к защите лабораторных работ
- •О лабораторной работе №1
- •Список литературы
- •Содержание
3.2 Лабораторная работа №2. Решение квадратного уравнения Задание
Разработать программу для решения уравнения вида в области действительных чисел (опорный алгоритм приведен на рисунке 2).
Решение уравнения должно быть получено при любых действительных значениях коэффициентов a, b, c (в том числе нулевых).
Обратите внимание, что в программе целесообразно изменить тип переменных с целочисленного int на float в строке float a, b, c, …;. Это тип переменной с плавающей точкой. Он позволяет хранить дробные числа. Согласитесь, что программа, работающая только с целыми данными, не так уж и полезна.
Такое изменение вызывает ряд связанных с ним изменений:
во-первых, к программе необходимо подключить библиотеку математических функций: #include < math.h>;
во-вторых, заменить в функциях ввода\вывода определения формата данных с %d на %f;
в-третьих, использовать в соответствующих выражениях присваивания имена функций извлечения квадратного корня и получения абсолютного значений подкоренного выражения, например, sqrt(fabs(d/(2*a);
и наконец, использовать общий вид условного оператора –
if ( <выражение условия> { <операторы> } else {<операторы>}
Рис. 2. Опорный алгоритм решения задачи
Методические указания
Обратите внимание на три аспекта представленного на рисунке 2 опорного алгоритма:
Данная схема выполнена с некоторыми отступлениями от рекомендаций по реализации схем алгоритма. В частности, она изобилует подробностями, которые не должны присутствовать на функциональной схеме. Это связано с необходимостью представить исчерпывающий материал для разработки в одной схеме, не создавая дополнительных объяснений;
2. На схеме алгоритма символ ввода данных предполагает диалог с пользователем, включающий выдачу ему приглашения на ввод каждого значения.
3. Схема алгоритма не отражает возможность равенства нулю некоторых коэффициентов уравнения. Например, при а=0 последствия выполнения соответствующей программы становятся просто катастрофическими: деление на 0 вызывает ее грубое прерывание вместо определения корней. Вам необходимо соответственно доработать алгоритм, представленный на рис. 2.
При создании тестовых примеров необходимо заранее знать результаты правильно работающей программы. Для нашей программы мы должны задать такие значения a, b, c для которых заранее известен результат. Например, мы хотим получить корни -5 и 3. Уравнение для таких корней выглядит следующим образом: . Приведя его к форме квадратного уравнения, получаем следующее уравнение, а значит и исходные коэффициенты для нашей программы: .
При выборе исходных данных целесообразно избегать для них значений 1 и 0 вследствие того, что мы не сможем определить, не произошло ли умножение на 1 и не выполнено ли сложение с 0. Поэтому выберем, например, a = 2, b=4, c=-30.
Для полноценного тестирования программы необходимо учесть все возможные варианты развития действий, то есть все ветви алгоритма. Выполнение определенных ветвей алгоритма происходит при появлении соответствующих условий. Исходя из опорного алгоритма к работе, у нас есть 3 ветви, но при дальнейшей разработке их количество может увеличиться. В нашей программе учтена возможность вычисления уточненных значений корней. Поэтому необходимо задать такие значения коэффициентов уравнения, которые позволят убедиться в достижении заданного результата. Например, введем значения в = 1.0 E 10, a = 1.0 E-10, то есть b существенно больше 4ac.
За основу циклической части программы могут быть взяты операторы первой лабораторной работы, отвечающие за проверку повтора программы.