- •1. Краткие теоретические сведения
- •1.1. Понятие циклического вычислительного процесса
- •1.2. Типовая блок-схема организация цвп
- •1.3. Классификация цвп
- •Повторений и специальной переменной - счетчиком циклов
- •1.4. Общие сведения об операторах цикла
- •1. Оператор while:
- •2. Оператор do…while:
- •3. Оператор for:
- •1.5. Оператор цикла типа "прогрессия" for
- •1.6. Основные правила и порядок выполнения оператора цикла for:
- •Оператор цикла со спецификацией, заданной скалярным выражением
- •1.7. Оператор цикла while
- •1.5.4.1. Оператор цикла while
- •1.5.4.3. Оператор цикла while
- •1.5.5.4. Оператор цикла while
- •1. Цикл с предусловием:
- •1.5.5.5. Основные правила использования и порядок выполнения оператора цикла while:
- •1.5.5.6. Пример № 1
- •1.8. Оператор цикла do...While
- •1.5.5.1. Оператор цикла do while
- •1.5.5.2. Оператор цикла с постусловием do
- •1.5.5.3. Оператор цикла do while
- •1.5.5.4. Оператор цикла do-while
- •2. Цикл с постусловием:
- •1.9. Табулирование функций
- •1.10. Вычисление конечных сумм и произведений
- •1.11. Правила организации циклических алгоритмов
- •1.12. Операторы перехода и их использование в циклах
- •1.12.1. Оператор прерывания циклов break
- •1.Break – оператор прерывания цикла.
- •1.12.2. Оператор перехода к следующей итерации цикла continue
- •Оператор продолжения continue для циклов do, while, for
- •1.12.3. Оператор перехода goto
- •1.12.4. Оператор возврата из функции return
- •Замечание:
- •2. Задание
- •2.1. Изучить теоретические сведения
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Табуляция неразветвляющейся функции
- •2.4.1.1. Условие задания
- •Варианты заданий
- •2.4.2. Задание 2. Табулирование разветвляющейся функции
- •2.4.2.1. Условие задания
- •2.4.3. Задание 3. Табулирование разветвляющейся функции
- •2.4.3.1. Условие задания
- •2.5. Задания для дома
- •2.5.1. Задание 1. Табулирование неразветвляющейся функции в равноотстоящих точках
- •2.5.1.1. Условие задания
- •2.5.2. Задание 2. Табулирование разветвляющейся функции в равноотстоящих точках
- •2.5.2.1. Условие задания
- •2.5.2.2.Пример программы табулирования функции
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие циклического вычислительного процесса 2
1.5.4.3. Оператор цикла while
Приведем пример реализации данного цикла, в котором выполняется суммирование элементов ряда S пока S < N:
int N=20, i = 0;
long S = 0L; while(S < N)
{
S=S+i;
i++;
}
В данном примере реализуется цикл while с условием i < N. Так как начальное значение переменной i=0, а N=20, то условие истинно и выполняется тело цикла, в котором осуществляется суммирование переменной i и увеличение ее на 1. Очевидно, что на 20 итерации значение i=20, условие станет ложным и цикл будет завершен. Продемонстрируем гибкость языка С, изменив данный пример следующим образом:
int N=20, i = 0;
long S = 0L;
while((S=S+i++) < N);
В данном случае при проверке условия сначала выполняются операторы, стоящие в скобках, где и осуществляется суммирование элементов ряда и только, затем, проверяется условие. Результат выполнения обоих вариантов программ одинаковый и S=21. Однако последняя конструкция бывает удобной при реализации опроса клавиатуры, например, с помощью функции scanf():
int num;
while(scanf("%d",&mun) == 1)
{
printf("Вы ввели значение %d\n",num);
}
Данный цикл будет работать, пока пользователь вводит целочисленные значения и останавливается, если введена буква или вещественное число. Следует отметить, что цикл while можно принудительно завершить даже при истинном условии цикла. Это достигается путем использования оператора break. Перепишем предыдущий пример так, чтобы цикл завершался, если пользователь введет число 0.
int num;
while(scanf("%d",&mun) == 1)
{
if(num == 0) break;
printf("Вы ввели значение %d\n",num);
}
Цикл завершается сразу после использования оператора break, т.е. в приведенном примере, при вводе с клавиатуры нуля функция printf() выполняться не будет и программа перейдет на следующий оператор после while. Того же результата можно добиться, если использовать составное условие в цикле:
int num;
while(scanf("%d",&mun) == 1 && num != 0)
{
printf("Вы ввели значение %d\n",num);
}
Таким образом, в качестве условия возможны такие же конструкции, что и в операторе if.
1. Цикл с предусловием:
while (условие) тело цикла.
Здесь условие представляет собой любое выражение, принимающее значение 0 (ложь) или не 0 (истина), тело цикла — простой (или составной) оператор либо блок.
Вначале вычисляется условие. Если оно оказывается истинным, то выполняется тело цикла; в противном случае управление передается оператору, следующему за телом цикла. Если при входе в цикл условие ложно, то тело цикла не будет выполнено ни разу.
Блок-схема цикла с предусловием представлена на рис. 4.1, а.
Рис. 4.1. Схемы выполнения операторов циклов: а -оператор while
1.5.5.4. Оператор цикла while
Оператор цикла while - оператор цикла итеративного типа с предусловием. Используется, когда количество повторений операторов тела цикла заранее неизвестно и определяется в процессе выполнения цикла. В этом операторе анализ конца цикла производится до выполнения операторов тела цикла.
Общий вид оператора цикла while:
while ( b ) S;
Здесь b - выражение любого типа, например, логическое, приводимое к арифметическому типу, определяющее условие повторения цикла; S - простой или составной оператор - рабочая часть цикла. Он должен включать операторы тела цикла и операторы изменения операндов выражения b (подготовки данных для очередного шага цикла).