Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




Операторы циклов – мощное средство записать некоторую последовательность операторов один раз и повторить ее многократно. Благодаря циклам производительность труда программиста повышается во много раз.

В языке Си существует три вида циклов: цикл с параметром или цикл типа for, цикл с предусловием или цикл типа while, цикл с постусловием или цикл типа do... while.

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

В цикле типа for число повторений известно заранее, в циклах типа while и do... while число повторений цикла заранее неизвестно, производится проверка условия повторения цикла: в цикле типа while – перед циклом, в цикле типа do... while – после его окончания.

В циклах типов for и while повторяющаяся часть (тело цикла) состоит из одного оператора, если требуется выполнить в цикле несколько операторов, они заключаются в фигурные скобки, образуя составной оператор. В цикле типа do... while тело цикла помещается между зарезервированными словами языка do и while, фигурные скобки также требуются, в названии цикла его тело условно обозначается тремя точками.

Во всех типах циклов условие продолжения цикла заключается в круглые скобки. Для цикла типа for заголовок цикла состоит из трех разделов: инициализации (присваивания начальных значений), проверки условия повторения, модификации (изменения параметров). Разделителем между разделами заголовка цикла типа for служит точка с запятой.

Не всегда число повторений цикла известно заранее, в этих случаях применяются циклы с предусловием (проверка условия перед циклом) или с постусловием (проверка условия после цикла).

Формат записи цикла с постусловием:

do {<тело цикла>} while (<условие>);

Операторы, составляющие тело цикла, помещаются в фигурных скобках между ключевыми словами do (выполнить) и while (пока). После ключевого слова while в круглых скобках записывается условие продолжения цикла. Пока это условие истинно, цикл будет продолжаться, как только условие станет ложным, цикл завершится и произойдет переход к следующему оператору. Обратим внимание, что в языке Паскаль, в отличие от Си, цикл с постусловием типа repeat... until выполняется, пока условие ложно.

Поскольку проверка условия продолжения цикла производится после выполнения цикла, этот цикл должен выполниться по крайней мере 1 раз.

Приведем пример. Пусть требуется решить некоторое уравнение, например, tg x – 2x = 0. Проверкой убеждаемся, что x=0 есть решение уравнения. Найдем нетривиальный положительный корень уравнения методом половинного деления.

Обозначим через l и r левый и правый концы интервала, на которых функция принимает значения разных знаков. Разделим отрезок [l, r] пополам и выберем ту половину, на концах которой функция принимает значения разных знаков. Будем продолжать деление до тех пор, пока длина интервала не станет меньше заданной точности, в качестве результата выведем середину последнего интервала.

//pol_del.c решение уравнения методом половинного деления

#include<stdio.h>

#include <math.h>

double fun(double t){return tan(t)–2*t;}

main(){

double l,r,x,eps;

printf(“%s”,”Введите левый и правый концы интервала, точность\n”);

scanf(“%lf%lf%lf”,&l,&r,&eps);

do {

x=(l+r)/2;

if (fun(x) < 0) l = x;

else r = x;

} while (r – l > eps);

x = (l + r)/2;

printf(“Корень уравнения %12.8lf\n”, x);

return 0;

}

В программе описана функция fun(t)=tg t – 2t, описание функции предшествует ее использованию. В главной функции main вводятся левый и правый концы интервала l, r и требуемая точность eps. Введем, например, l = 0.001; r = 1.5; eps = 0.000000001. Далее вычисляется середина интервала [l, r] и значение функции в этой точке. Если значение fun(x) отрицательно, подвигается левый конец интервала (l = x), если положительно, подвигается правый конец интервала (r = x).

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

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

 





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 1075 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Надо любить жизнь больше, чем смысл жизни. © Федор Достоевский
==> читать все изречения...

2355 - | 2039 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.