1.27M
Category: programmingprogramming

Программирование циклических алгоритмов. Лекция №6 по курсу «ОАИП»

1.

Программирование
циклических алгоритмов
Лекция №6 по курсу «ОАИП»
29.11.2022
Романькова Т.Л.
1

2.

Циклический - алгоритм, в котором некоторая
последовательность действий может выполняться несколько
раз в зависимости от заданного условия.
В схеме циклический алгоритм представляется в виде
типовой структуры цикл:
29.11.2022
Романькова Т.Л.
2

3.

Пример 1. Ниже приведен алгоритм вычисления
i2
i 1 10
125
Начало
S=0
i=1
i <= 125
Нет
Да
S S
i2
10
i =i+1
Вывод S
Конец
29.11.2022
Романькова Т.Л.
3

4.

Операторы цикла
Цикл предназначен для организации повторения
выполнения некоторой инструкции или группы инструкций
некоторое число раз. Каждый проход по телу цикла называется
итерацией.
В языке C существует три оператора цикла:
цикл с предусловием while;
цикл с постусловием do-while;
цикл с параметром for.
29.11.2022
Романькова Т.Л.
4

5.

Цикл с предусловием while
while ( Условие_Выполнения )
{ // Инструкции цикла (тело цикла) }
В качестве выражений наиболее часто используются
условные выражения, однако это могут быть выражения
произвольного типа.
29.11.2022
Романькова Т.Л.
5

6.

Выполнение оператора:
Сначала
вычисляется
значение
выражения
Условие_Выполнения.
Если оно не равно нулю, т.е. условие истинно, то выполняются
операторы цикла (тело цикла).
Затем
снова
проверяется
значение
выражения
Условие_Выполнения,
и если оно не равно нулю, инструкции цикла выполняются
еще раз. И так до тех пор, пока значение выражения
Условие_Выполнения не станет равным нулю.
Если условие ложно сразу, тело цикла не выполнится ни
одного раза.
Если в цикле выполняется группа инструкций, то они
должны быть выделены в блок (заключены в фигурные скобки).
29.11.2022
Романькова Т.Л.
6

7.

Пример 2. Реализация алгоритма из примера 1 с помощью
оператора while
29.11.2022
Романькова Т.Л.
7

8.

Пример 3. Написать программу, которая вычисляет произведение
последовательности целых чисел, введенных с клавиатуры.
Предварительно должно вводиться количество чисел для
нахождения произведения .
29.11.2022
Романькова Т.Л.
8

9.

29.11.2022
Романькова Т.Л.
9

10.

29.11.2022
Романькова Т.Л.
10

11.

Пример 4. Программа выводит на экран меню, в котором
пользователь может выбрать одно из следующих действий введя
соответствующее число: подсчитать сумму двух чисел,
подсчитать разность двух чисел, выйти из программы.
29.11.2022
Романькова Т.Л.
11

12.

29.11.2022
Романькова Т.Л.
12

13.

29.11.2022
Романькова Т.Л.
13

14.

29.11.2022
Романькова Т.Л.
14

15.

29.11.2022
Романькова Т.Л.
15

16.

Пример 5. Составить алгоритм вычисления функции для
значений аргумента x, изменяющегося в интервале от xнач до
xкон с шагом ∆x, и заданных констант a и b. Такая задача
называется задачей о табулировании функции.
ax b
y
ln 2 x
29.11.2022
Романькова Т.Л.
16

17.

Начало
Ввод xнач, xкон, x
x= xнач
x<= xкон
Нет
Да
y
ax b
ln 2 x
Вывод x, y
x = x + x
Вывод xнач, xкон,
x
Конец
29.11.2022
Романькова Т.Л.
17

18.

29.11.2022
Романькова Т.Л.
18

19.

//вывод шапки таблицы
printf("\n--------------------------\n");
printf("\n|
x
|
y
|\n");
printf("--------------------------\n");
x = xn;
while (x < xk + 1e-9)
{
y = sqrt(a*x+b) / pow(log(fabs(x)),2.);
printf("| %8.3f | %8.3f
|\n", x, y);
x += dx;
}
printf("--------------------------\n");
system("pause");
29.11.2022
Романькова Т.Л.
19

20.

29.11.2022
Романькова Т.Л.
20

21.

Передача управления из тела цикла
оператор break — досрочно завершает выполнение цикла,
передавая управление на следующий за циклом оператор;
оператор continue — выполняет переход к следующей
итерации цикла, пропуская все оставшиеся действия до конца
итерации ;
29.11.2022
Романькова Т.Л.
21

22.

Пример 6. Найти сумму положительных чисел, значения
которых вводятся с клавиатуры. Процесс ввода прекращается,
если пользователь вводит отрицательное число.
29.11.2022
Романькова Т.Л.
22

23.

29.11.2022
Романькова Т.Л.
23

24.

Цикл с постусловием do…while
do
{
// Инструкции цикла (тело цикла)
} while ( выражение) ;
Тело цикла обязательно выполняется хотя бы один раз!
29.11.2022
Романькова Т.Л.
24

25.

Выполнение оператора do:
Сначала выполняется тело цикла
Потом вычисляется
истинность
выражение
и
проверяется
его
Если выражение истинно, то происходит возврат и тело
цикла выполняется еще раз
Если выражение ложно, то происходит выход из цикла и
управление передается следующему за циклом оператору
29.11.2022
Романькова Т.Л.
25

26.

Пример 7. Ниже приведен алгоритм вычисления
реализация с помощью оператора do while.
i2
i 1 10
125
и его
Начало
S=0
i=1
2
i
S S
10
i =i+1
Да
i <=125
Нет
Вывод S
Конец
29.11.2022
Романькова Т.Л.
26

27.

Цикл for
Этот вид цикла используется в тех случаях, когда заранее
известно число повторений. В нем обычно используется
параметр цикла (переменная, которая служит для контроля числа
повторений).
Формат оператора:
for (выражение1; выражение2; выражение3)
{
// тело цикла
}
выражение1 выполняется один раз в начале выполнения цикла.
Как правило, это инициализация счетчиков - специальных
переменных, которые используются для контроля за
повторением цикла.
29.11.2022
Романькова Т.Л.
27

28.

выражение2 представляет условие, при соблюдении которого
выполняется цикл. Обычно в качестве условия используется
логическое выражение, и если оно равно нулю (то есть
условие истинно), то выполняется тело цикла, а затем
вычисляется выражение3.
выражение3 задает модификацию (изменение) параметров
цикла, например, здесь может происходить увеличение
счетчиков цикла.
29.11.2022
Романькова Т.Л.
28

29.

Выполнение оператора:
Сначала
выполняются
действия
выражения1
(инициализация).
Затем вычисляется значение выражения2 (условие
выполнения цикла) и проверяется на истинность.
Если выражение истинно, то выполняется тело цикла,
затем действия выражения3 и происходит возврат на проверку
выражения.
Если выражение ложно, то происходит выход из цикла и
управление передается на следующий оператор после цикла.
Каждый отдельный проход цикла называется итерацией.
29.11.2022
Романькова Т.Л.
29

30.

Пример 8. Ниже приведен алгоритм вычисления
реализация с помощью оператора for.
i2
i 1 10
125
и его
Начало
S=0
i=1
i <= 125
Нет
Да
S S
i2
10
i =i+1
Вывод S
Конец
29.11.2022
После выхода из цикла переменная i не
существует!
Романькова Т.Л.
30

31.

Необязательно
определении цикла.
указывать
все
три
выражения
в
Переменная-счетчик определена и инициализирована вне
цикла, а ее приращение происходит в самом цикле.
29.11.2022
Романькова Т.Л.
31

32.

В разделе инициализации и модификации можно
указывать несколько операторов через запятую. Эти операторы
выполняются последовательно.
double s ;
int i;
for (s=0,i=1; i <= 125;s += i * (double)i / 10,i++ )
{
}
printf("Сумма равна %.3f\n", s);
С точки зрения хорошего стиля программирования так
делать не рекомендуется. В строку for лучше включать
инициализацию и модификацию только параметров цикла.
29.11.2022
Романькова Т.Л.
32

33.

Особенности использования цикла for:
любая из трех компонент цикла for может отсутствовать, но
точки с запятыми остаются;
если пропущено условие выполнения цикла, то оно по
умолчанию считается истинным:
for( ; ; ) {…} //бесконечный цикл
если
переменная
объявлена
(создана)
в
разделе
инициализаций, то после выхода из цикла она перестает
существовать
29.11.2022
Романькова Т.Л.
33

34.

Пример 9. Реализация задачи табулирования функции из примера
5 с помощью оператора for.
С точки зрения хорошего стиля программирования это решение
является не очень грамотным. Считается, что параметр цикла for
должен быть целочисленного типа.
29.11.2022
Романькова Т.Л.
34

35.

Можно определять вложенные циклы.
Например, создадим программу, которая выводит на
экран таблицу умножения.
29.11.2022
Романькова Т.Л.
35

36.

29.11.2022
Романькова Т.Л.
36

37.

Задание. Внести изменения в программу, чтобы таблица
выглядела так:
29.11.2022
Романькова Т.Л.
37
English     Русский Rules