|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Три формы операторов циклаТри формы операторов цикла. Как и в других языках программирования, в языке Си существуют специальные средства для организации циклов (операторы циклов), позволяющие упростить их программирование. В большинстве языков программирования оператор цикла состоит из двух элементов - заголовка и тела. Тело включает операторы, выполняемые в цикле, заголовок организует циклическое выполнение операторов тела. В соответствии с названием заголовок размещается непосредственно перед телом цикла. В языке Си равноправно используются три разных оператора цикла, обозначаемых соответственно служебными словами while, for, do. Циклы while и for построены по схеме заголовок_цикла тело_цикла
Цикл do имеет другую структуру - тело цикла как бы обрамлено (сверху и снизу) конструкциями, организующими циклическое выполнение тела. Поэтому говорить о заголовке цикла do в языке Си, по-видимому, некорректно. Введем форматы перечисленных операторов цикла и приведем примеры их использования. Предварительно отметим, что во всех трех операторах цикла тело цикла - это либо отдельный, либо составной оператор, т.е. последовательность операторов, заключенная в операторные скобки {}. Тело цикла может быть и пустым оператором, т.е. изображаться только как ";". Цикл while (цикл с предусловием) имеет вид:
while (выражение_условие) тело_цикла
В качестве выражения_условия чаще всего используется отношение или логическое выражение. Если оно истинно, т.е. не равно 0, то тело цикла выполняется до тех пор, пока выражение_условие не станет ложным. Обратите внимание, что проверка истинности выражения осуществляется до каждого выполнения тела цикла (до каждой итерации). Таким образом, для заведомо ложного выражения_условия тело цикла не выполнится ни разу. Выражение_условие может быть и арифметическим выражением. В этом случае цикл выполняется, пока значение выражения_условия не равно 0.
Цикл do (цикл с постусловием) имеет вид: do тело_цикла while (выражение_условиё); Выражение_условие логическое или арифметическое, как и в цикле while. В цикле do тело цикла всегда выполняется по крайней мере один раз. После каждого выполнения тела цикла проверяется истинность выражения_условия (на равенство 0), и если оно ложно (т.е. равно 0), то цикл заканчивается. В противном случае тело цикла выполняется вновь.
Цикл for (называемый параметрическим) имеет вид: for (выражение _1; выражение_условие; выражение_3) тело_цикла
Первое и третье выражения в операторе for могут состоять из нескольких выражений, разделенных запятыми. Выражение_1 определяет действия, выполняемые до начала цикла, т.е. задает начальные условия для цикла; чаще всего это выражение присваивания. Выражение_условие - обычно логическое или арифметическое. Оно определяет условия окончания или продолжения цикла. Если оно истинно (т.е. не равно 0), то выполняется тело цикла, а затем вычисляется выражение_3. Выражение_3 обычно задает необходимые для следующей итерации изменения параметров или любых переменных тела цикла. После выполнения выражения_3 вычисляется истинность выражения_условия, и все повторяется... Таким образом, выражение_1 вычисляется только один раз, а выражение_условие и выражение_3 вычисляются после каждого выполнения тела цикла. Цикл продолжается до тех пор, пока не станет ложным выражение_условие. Любое из трех, любые два или все три выражения в операторе for могут отсутствовать, но разделяющие их символы ";" должны присутствовать всегда. Если отсутствует выражение условие, то считается, что оно истинно и нужны специальные средства для выхода из цикла. Схемы организации циклов while, do и for даны на рис. 2.3.
Рис. 1.3. Схемы организации циклов while, do, for: а - цикл с предусловием while; б - цикл с постусловием do; в - параметрический цикл for
Проиллюстрируем особенности трех типов цикла на примере вычисления приближенного значения
для заданного значения х. Вычисления будем продолжать до тех пор, пока очередной член ряда остается больше заданной точности. Обозначим точность через eps, результат - b, очередной член ряда - r, номер члена ряда - i. Для получения i-гo члена ряда нужно (i-1)-й член умножить на х и разделить на i, что позволяет исключить операцию возведения в степень и явное вычисление факториала. Опустив определения переменных, операторы ввода и проверки исходных данных, а также вывода результатов, запишем три фрагмента программ.
Так как проверка точности проводится до выполнения тела цикла, то для окончания цикла абсолютное значение очередного члена должно быть меньше или равно заданной точности.
Так как проверка точности осуществляется после выполнения тела цикла, то условие окончания цикла - абсолютное значение очередного члена строго меньше заданной точности. Соответствующие изменения внесены и в операторы, выполняемые до цикла. Условие окончания параметрического цикла такое же, как и в цикле while. Все три цикла записаны по возможности одинаково, чтобы подчеркнуть сходство циклов. Однако в данном примере цикл for имеет существенные преимущества. В заголовок цикла (в качестве выражения _ 1) можно ввести инициализацию всех переменных: В выражение_3 можно включать операцию изменения счетчика членов ряда: Можно еще более усложнить заголовок, перенеся в него все исполнимые операторы тела цикла: В данном случае тело цикла - пустой оператор. Для сокращения выражения_3 в нем использованы составные операции присваивания и операция ++. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |