Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфрм отв.rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
11.08 Mб
Скачать

Блок-схема алгоритма поиска корня уравнения методом половинного деления (дихотомии)

Разработаем алгоритм программы поика решения уравнения на заданном отрезке в виде блок-схемы:

Текст программы решения задачи на С++

В среде программирования Borland C++ 7.0 вводим текст программы на Си ++:

#include <stdio.h>

#include <conio.h> #include <math.h> // функция для вычисления f(х) float f(float z) { return pow(z,3)+6*pow(z,2)+6*z-7;//возвращаемое значение }

// главная функция void main() { float a=-3.0, b=2.0, e=0.001, x;// объявление переменных while (fabs(a-b)>=e) // цикл { // проверка на разные знаки по концам отрезка if((f(a)>0&&f((a+b)/2)<0)||(f(a)<0&&f((a+b)/2)>0)) b=(a+b)/2; else if ((f((a+b)/2)>0&&f(b)<0)||(f((a+b)/2)<0&&f(b)>0)) a=(a+b)/2; else { printf("! Net kornej !"); return; getch(); } }

x=(a+b)/2;// вычисление х после завершения цикла printf("x=%f F(x)=%f |a-b|=%f",x,f(x),fabs(a-b)); // вывод результатов getch(); }

Нажимаем клавиши CTRL+F9 для компиляции и запуска на выполнение программы. Получаем  корень уравнения x≈0,834 :

Программа начинается с директив препроцессора, начинающихся с символа #, которые дают указание препроцессору подключить к программе заголовочные файлы с описанием тех или иных библиотечных функций. В данном случае подключается заголовочный файл stdio.h с описанием функций ввода-вывода, заголовочный файл math.h с описанием математических функций и заголовочный файл conio.h с описанием функции ожидания нажатия клавиши getch().

Программа состоит из двух функций: пользовательской функции f(x) и обязательной функции main(). Функция main() не возвращает никаких значений и поэтому она объявляется с ключевым словом void. В отличие от функции main(), функция f(x) возвращает вещественное значение и объявляется с ключевым словом float. Тела функций являются блоками и поэтому ограничены фигурными скобками.

В теле функции main() объявляются вещественные переменные a, b, e, х. Далее используется оператор цикла while, в котором применяются условные операторы: if (выражение) оператор 1; else оператор 2; которые позволяют проверить разные ли знаки у концов отрезка.  Использование вышеуказанной библиотечной функции printf() дает возможность вывести на стандартное устройство вывода (монитор) сообщение об отсутствии корней или сообщение с значением корня, значением функции в этой точке и модуль разности концов отрезка. Тело функции main() зак¬рывается фигурной скобкой. На этом программа заканчивается.

34,35) Операторы цикла

Операторы цикла используются для вычислений, повторяющихся многократно. В Паскале имеется три вида циклов: цикл с предусловием while, цикл с постусловием repeat и цикл с параметром for. Каждый из них состоит из определенной последовательности операторов.

Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла (рис. 2.5). Один проход цикла называется итерацией.

Рис. 2.5.  Структурные схемы операторов цикла

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

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

Параметром цикла называется переменная, которая используется при проверке условия цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла. Количество повторений такого цикла можно определить заранее. Параметр есть не у всякого цикла. В так называемом итеративном цикле условие продолжения содержит переменные, значения которых изменяются в цикле по рекуррентным формулам 1)

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue и goto. Передавать управление извне внутрь цикла не рекомендуется, потому что при этом могут не выполниться начальные установки.