1.50M
Category: programmingprogramming

Основы алгоритмизации и программирования. Циклы

1.

Основы алгоритмизации и
программирования
Пашук Александр Владимирович
[email protected]

2.

Содержание лекции
1.
2.
3.
4.
5.
Что такое циклы?
Циклы for
Циклы while
Циклы do … while
Примеры

3.

Что такое циклы?
• Суть
циклов
заключается
в
последовательном
повторении
определенной части программы некоторое
количество раз.
• Повторении продолжается до тех пор, пока
выполняется некоторое условие.
• Когда значение выражения, задающего
условие, становится ложным, выполнение
цикла
прекращается,
а
управление
передается оператору, следующему за
циклом.

4.

Зачем нужны циклы?

5.

Цикл for
• Цикл
for
организует
выполнение
фрагмента программы фиксированное
количество раз.
• Как правило используется тогда, когда
число раз повторений выполнения тела
цикла известно заранее (но не всегда).
• Считается самым простым циклом для
понимания,
т.к.
все
элементы,
контролирующие
его
выполнение,
собраны в одном месте.

6.

Цикл for

7.

Цикл for
• Инициализирующее выражение вычисляется
только один раз – в начале выполнения цикла.
• Условие выполнения цикла проверяется
каждый раз перед исполнением тела цикла и
определяет, нужно ли исполнять цикл еще раз.
• Инкрементирующее выражение выполняется
каждый раз после того, как тело цикла
полностью выполнилось.

8.

Цикл for
// loop counter
int i;
// a =
// h =
for (i
{
cout
}
0; b = 10;
(b-a) = 10
= 0; i < 10; i++)
<< i << endl;

9.

Цикл for
// loop counter
int i;
for (i = 0; i < 10; i++)
{
cout << i << endl;
}

10.

Область видимости переменных
• Тело цикла, заключенное в фигурные скобки,
называется блоком.
• Важная особенность блока заключается в том,
что переменные, определенные внутри него,
невидимы вне этого блока.
• Ограничение области видимости переменных
позволяет использовать одно и то же имя
переменной несколько раз.

11.

Пример
int main() {
int i;
for (i = 0; i < 10; i++) {
int cube = i * i * i;
cout << "Cube of " << i << " = ";
cout << cube << endl;
}
// Error: 'cube' was not declared in this scope
cout << cube;
}

12.

Еще один пример
int main() {
unsigned long fact = 1;
for (int i = 5; i > 0; i--) {
fact *= i;
}
cout << "5! = " << fact << endl;
return 0;
}

13.

Последний пример
bool exit = false;
int i, j = 10, sum;
for(i = 0, sum = 0; i < 5 && !exit; i++, j--) {
sum += i * j;
if (sum > 10)
exit = true;
}
cout << sum << endl;

14.

Цикл while
Используется в случаях, когда
повторений заранее не известно.
количество

15.

Цикл while

16.

Пример
int main() {
int n = 100;
while (n != 0) {
cout << "Enter number: ";
cin >> n;
cout << n*n << endl;
}
}

17.

Пример: числа Фибоначчи
// 1 1 2 3 5 8 13 21 ...
const unsigned long limit = 4294967295;
unsigned long next = 0, last = 1;
while (next < limit / 2) {
cout << last << " ";
unsigned long sum = next + last;
next = last;
last = sum;
}

18.

Цикл do
Используется в тех случаях, когда тело цикло
должно быть выполнено хотя бы один раз.

19.

Цикл do

20.

Вложенные циклы
const int NROWS = 10;
const int NCOLS = 10;
for ( int r = 0; r <= NROWS; r++ ) { // Rows
for ( int c = 0; c <= NCOLS; c++ ) { // Columns
cout << setw(4) << r * c;
} // End of loop through columns
cout << endl;
} // End of loop through rows

21.

Оператор break
• Производит выход из
цикла подобно тому, как
он
действовал
в
конструкции switch.
• Следующим оператором
после выполнения break
будет являться первый
оператор, находящийся
вне данного цикла.

22.

Пример
int month;
while( true ) {
cout << "Please enter a month from 1 to 12\n";
cin >> month;
if( month > 0 && month < 13 )
break;
cout << month << " is not a valid month.\n";
cout << "Please try again.\n";
}

23.

Так делать не надо

24.

Оператор continue
• Иногда необходимо при
определенном условии
не выходить из цикла, а
досрочно возвращаться в
его начало.
• Строго говоря, continue
делает
переход
на
завершающую фигурную
скобку цикла.

25.

char ch;
int a, b;
Пример
do {
cout << "Enter `a` and `b`: ";
cin >> a >> b;
if (!b) {
cout << "Division by zero\n";
continue;
}
cout << "a / b = " << (double) a / b << endl;
cout << "One more time? (y/n)? ";
cin >> ch;
} while (ch != 'n');

26.

Оператор goto
• Рассматривается для общего понимания, не для
активного использования в программах
• Использование goto способно легко запутать
логику программы и сделать ее трудной для
понимания и исправления ошибок.
• Практически не существует ситуаций, в которых
использование
goto
являлось
бы
необходимостью.
• Практически всегда может быть заменен
альтернативной реализацией.

27.

Пример
int main(){
double a;
tryAgain:
cout << "Enter a non-negative number: ";
cin >> a;
if (a < 0.0)
goto tryAgain; // Don't do that!
cout << "sqrt(" << a << ") = " << sqrt(a) << endl;
return 0;
}

28.

Пример вопроса на экзамене
В цикле for, тело которого состоит из нескольких
операторов, точка с запятой ставится после:
• оператора цикла for;
• закрывающей фигурной скобки,
ограничивающей тело цикла;
• каждого оператора в теле цикла;
• условия продолжения цикла.

29.

Пример вопроса на экзамене
Оператор goto вызывает переход на:
• операцию;
• метку;
• переменную;
• функцию.
English     Русский Rules