Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Оператор пошагового цикла for
Предназначен для реализации в программе полного варианта цикла с параметром – формирование начального и последующих значений параметра цикла, проверка каждого из них на соответствие диапазону изменения с реализацией тела цикла, если условие выполняется, и выходу из цикла в случае его невыполнения. Структура оператора for( [нач_выр] ; [усл_выр] ; [выр_прир] ) { тело цикла } где for – ключевое слово (для); нач_выр – выражение, задающее начальное значение параметра цикла; усл_выр – выражение, определяющее проверку условия повторения цикла; выр_прир – выражение, формирующее текущее значение параметра цикла через предыдущее; ; – разделители выражений; ( ) – ограничители выражений; [ ] – признак необязательности содержимого; тело цикла – совокупность операторов, выполнение которых требуется повторять; { } – ограничители тела цикла. ü Внимание! В операторе цикла for символ окончания (;) не указывается. Оператор выполняется следующим образом: · определяется начальное значение параметра цикла (нач_выр); · проверяется его соответствие диапазону счета (усл_выр); · если выражение усл_выр истинно (результат не равен нулю): – выполняется тело цикла; – формируется новое текущее значение параметра (выр_прир); – повторяется его проверка в усл_выр; · если усл_выр ложно (результат равен нулю): – выполнение оператора цикла прекращается; – управление передается следующему после тела цикла оператору (цикл завершается). Схема выполнения оператора for( нач_выр ; усл_выр ; выр_прир ) ЛОЖЬ ИСТИНА { тело цикла } Правила записи и выполнения 1. В качестве начального выражения (нач_выр) используются одно простое (последовательное) или несколько (разделенных запятыми) присваиваний, например xi = xn (a=b=c=1.) или xi = xn, y=0., z=2.5, a=b=c=1. 2. Если начальное выражение отсутствует, начальное значение параметра цикла будет определяться содержимым соответствующей переменной (xi). Например, сформированным до входа в цикл: xi = xn; /* формирование начального значения */ for( ; xi <= xk; xi = xi + dx ) { . . . yi = sin( xi ); . . . } 3. В качестве усл_выр могут использоваться любые выражения Си/Си++. Арифметические, например (sin(b)+0.5), (2*c–d/f), (a) или простые (составные) логические выражения, например ( а != b ), ( sin( x ) < b ), ( x <= a && x >= b ). 4. Если условное выражение отсутствует, его значение считается истинным – создается бесконечный цикл. ü Внимание! Выход из такого цикла невозможен – требуется перезагрузка операционной системы. Один из вариантов предотвращения подобной ситуации заключается в формировании в теле цикла отрицания условного выражения в виде оператора if со структурой, например if(усл_выр) break; Реальное использование иллюстрируется фрагментами:
5. В качестве выражения приращения (выр_прир) используются одно (несколько разделенных запятыми) присваиваний вида xi = j(xi - 1), например xi=xi +dx или xi = xi+dx, b=b+2. 6. Если выр_прир отсутствует, текущее значение параметра цикла будет определяться содержимым соответствующей переменной (xi). Если оно не меняется – создается бесконечный цикл. ü Внимание! Выход из такого цикла невозможен – требуется перезагрузка операционной системы. Один из вариантов предотвращения подобной ситуации – формирование закона изменения параметра в теле цикла, например: for( xi = xn ; xi <= xk ; ) /* заголовок цикла */ { . . . yi = sin( xi ); . . . xi = xi + dx; /* закон изменения параметра*/ } 7. В принципе, нач_выр и выр_прир могут формироваться вне заголовка цикла. Первое – до него, второе – в теле цикла, например: xi = xn;/*формирование начального значения параметра*/ for( ; xi <= xk ; ) /* заголовок цикла */ { . . . yi = sin( xi ); . . . xi = xi + dx; /* закон изменения параметра*/ } В этом случае оператор for выполняет функции оператора while. 8. Тело цикла оформляется одним оператором (составным или простым). 9. В теле цикла возможно использование специальных операторов break, goto, continue, обеспечивающих искусственный (принудительный) выход из цикла. Оператор break прекращает выполнение цикла и передает управление оператору, записанному непосредственно под телом цикла. Оператор goto m организует выход из цикла с передачей управления оператору, помеченному его меткой. Оператор continue прерывает выполнение тела цикла и возвращает управление заголовку цикла, например:
Первый фрагмент предписывает искусственный выход из цикла при выполнении в теле цикла условия c < ai с передачей управления оператору d = 15. Второй – нарушает естественный порядок вычисления тела цикла при c < ai с передачей управления оператору d=12., помеченному меткой k. Третий прерывает выполнение тела цикла по тому же условию, но управление возвращается заголовку цикла. 10. В теле цикла возможно использование других (вложенных) операторов цикла. Вывод: оператор for позволяет программировать арифметические циклы с параметром, например, представленные схемами рис. 5.6 (блоки 4, 5, 6, 7); рис. 5.7в (блоки 4, 5, 6). При этом задание начального значения параметра, его проверка на соответствие диапазону счета и изменение осуществляются в заголовке цикла (блок 4). Рассмотренные операторы цикла позволяют реализовать составленные ранее схемы алгоритмов. ü Внимание! Используемые в алгоритме переменные Зi и Зi-1 математически представляют текущие и предыдущее значения одной и той же переменной. Поэтому в программе они должны идентифицироваться как одна именованная ячейка (переменная). Идентификация переменных задачи приведена в табл. 5.2. Таблица 5.2
Возможные варианты программ решения задачи с каждым из рассмотренных операторов цикла представлены ниже.
Дата добавления: 2015-07-26; просмотров: 197; Нарушение авторских прав Мы поможем в написании ваших работ! |