Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Лекция 7. В языке С++ определены три оператора цикла:
Операторы цикла
В языке С++ определены три оператора цикла:
- цикл с предусловием; - цикл с постусловием; - итерационный цикл.
5.Оператор цикла с предусловием. 1) Синтаксис:
while (<выражение>) <тело цикла>;
Здесь <выражение> - это арифметическое или логическое выражение, <тело цикла> - это либо один оператор (в том числе и пустой), который заканчивается “;”, либо составной оператор, либо блок. 2) Семантика: сначала вычисляется значение выражения. Если оно #0 или истина, то выполняется тело цикла. Затем повторяется вычисление значения выражения и выполнение тела цикла, пока значение выражения не станет = 0 или false. Как только выражение становится ложным, управление передается оператору, следующему за этим циклом. Пример. Вычислить сумму первых кнатуральных чисел. s = 1+2+…+к
#include <iostream.h> #include <conio.h> void main() { int S = 0, k; cin >> k; int i = 0; while (i < k) S +=++i; cout << “\n S = “ << S; getch(); } Пример. Решить уравнение
0,25 x 3 + x – 1,25 = 0; x € [0,2]
методом итераций.
#include <iostream.h> #include <conio.h> #include <math.h> void main() { float x, y, x0, eps; int n = 1; // счетчик итераций cout << “\n Введите х0 и eps ”; cin >> x0 >> eps; y = x0; x = 1.25 – 0.25*y*y*y; while (fabs(y-x)>eps) { y = x; x = 1.25 – 0.25*y*y*y; n++; } cout << “\n x = “ << x << “n= “ << n; getch(); }
6. Оператор цикла с постусловием.
1) Синтаксис: do <тело цикла> while (<выражение>); 2) Семантика: Сначала выполняется тело цикла. Затем вычисляется значение выражения. Если оно #0 или истина, то вновь выполняется тело цикла. Если выражение ложно, то осуществляется переход к следующему за циклом оператору. Решим предыдущие примеры с помощью оператора цикла с постусловием. ...... { int S = 0, k; { float x, y, x0, eps; cin >> k; int n = 0; int i = 1; cin >> x0 >> eps; do y = x0; { S += i; do i++; { x = y; } y = 1.25 – 0.25*x*x*x; while (i<= k); n++; ... } } while (fabs(y-x) > eps); cout << “\n y= “ << y << “n= “ << n; }
7.Оператор итерационного цикла 1).Синтаксис: for (<инициализация цикла>; <выражение-условие>; <список выражений>) <тело цикла>;
Здесь <инициализация цикла> - последовательность определений и выражений, разделенных запятыми; <выражение-условие> - это либо арифметическое выражение, либо отношение, либо пусто (но “;” сохраняется); <список выражений> - последовательность выражений, разделенных запятыми. 2) Семантика: Вначале выполняется инициализация цикла. Затем вычисляется значение выражения-условия. Если оно #0 или истина, то выполняется тело цикла. Затем вычисляются значения выражений из списка. Далее снова вычисляется значение выражения-условия, и цикл повторяется до тех пор, пока это значение не будет равным нулю или false. Пример. Найти сумму квадратов первых К членов натурального ряда:
I вариант
II вариант
В языке С++ разрешается опустить любой элемент заголовка. Например: for (int i = 0, s = 0; i < k;) s +=++i*i; Здесь отсутствует список выражений. Условным выражением, которое управляет циклом, может быть любое выражение, при этом оно может не включать параметр цикла. Например, реализуем метод итераций с использованием цикла for. {... cin >> xo >> eps; y = xo; x = 1.25 – 0.25*y*y*y; int n; for (n = 0; fabs(y-x) > eps; n++) { y = x; x = 1.25 – 0.25*y*y*y;} cout << x << n; }
При объявлении переменной в заголовке цикла важно помнить: эта переменная видима только в теле цикла. В языке С++ разрешена любая глубина вложений циклов. Пример: Найти множители целых чисел в диапазоне от2 до 10. #include <iostream.h> void main() { for (int i = 2; i <=10; i++) { cout << “\nмножители числа “ << i << “:”; for (int j = 2; j < i; j++) if ((i%j) == 0) cout << j << “ “; cout << “\n”; } } Результат: Множители числа 2: Множители числа 3: Множители числа 4: 2 Множители числа 5: Множители числа 6: 2 3 Множители числа 7: Множители числа 8: 2 4 Множители числа 9: 3 Множители числа 10: 2 5
Вопросы 1 Тело цикла фрагмента программы … int a = 1, b = 1; while (a + b < 8) { a ++; b = b + 2; } … выполнится 1. 1 раз; 2. 2 раза; 3. 3 раза; 5. бесконечное число раз. 2. Цикл в блоке {float p=4.0; do p=p * 0.1; while(p >=0.0001); } будет исполнен 1. 0 раз; 2. 1 раз; 3. 4 раза; 4. 5 раз; 5. бесконечное число раз. 3. Определите последовательность выполнения шагов алгоритма, реализующего цикл с предусловием 1. выполняется тело цикла, изменяется параметр цикла, проверяется условие продолжения выполнения цикла; 2. изменяется параметр цикла, проверяется условие продолжения выполнения цикла, выполняется тело цикла; 3. проверяется условие продолжения выполнения цикла, выполняется тело цикла; 4. определяется, сколько раз должен быть выполнен цикл, и далее цикл с предусловием сводится к циклу с параметром. 4. Укажите операторы итерационного цикла, которые правильно вычисляют значение s=1+2+3+…+k: 1. for(int i=1,s=0;i<=k;i++) s+=i; 2. for(int i=1,s=0;i<k;s+=++i); 3. for(int i=0,s=0;i<k)s+=++i; 4. int i=1,s=0;for(;i<=k;i++)s+=i;
Date: 2015-12-12; view: 533; Нарушение авторских прав |