(495)240-8280ПН-СБ с 12:00 до 20:00
We speak English

4.4. Операторы повторения

Для создания циклов с заданным числом повторений используется счетный оператор цикла For, который имеет следующую структуру:

For <Нач. Знач.> → <Парам. Цик.> To <Кон. Знач.>
{R} <оператор {R}> Next

Здесь:

  • For, To, Next - встроенные операторы (для, до, выполнить);
  • <Парам. Цик.> - параметр цикла - переменная любого порядкового типа;
  • <Нач. Знач.> - начальное значение - выражение того же типа;
  • <Кон. Знач.> - конечное значение - выражение того же типа;
  • <оператор {R}> - любой оператор графического калькулятора.

Блок-схема счетного оператора циклов For

Оператор For работает следующим образом. Сначала вычисляется выражение <Нач. Знач.> и осуществляется присваивание параметру цикла начального значения. После этого циклически повторяется:

  • проверка условия <Парам. Цик.> ≤ <Кон. Знач.>;
  • если условие выполнено, оператор For завершает свою работу.

Пример 10.
Программа, которая выводит на экран последовательность целых чисел от 1 до 10.

For 1→I To 10 ↵
I
Next

Следует отметить, что оператор For может выполнять циклически несколько операторов:

  • выполнение оператора <оператор {R}>;
  • наращивание переменной <Парам. Цик.> на единицу.

Пример 11.
Программа, которая вычисляет сумму десяти чисел, последовательно введенных с клавиатуры.

0 → S ↵
For 1 → I To 10 ↵
"Введите число" : ? → X ↵
S + X → S ↵
Next ↵
S
"END" : Stop

Следует отметить, что условие, управляющее работой оператора For, проверяется перед выполнением оператора. Если условие не выполняется в самом начале работы оператора, то он не выполняется ни разу. Следующее обстоятельство - шаг наращивания параметра строго постоянен и равен "+1".

Если необходимо, чтобы изменения происходили с произвольным шагом, то надо применить более общую конструкцию цикла:

For <Нач. Знач.> → <Парам. Цик.> To <Кон. Знач.>
Step <Разм. шага> {R} <оператор {R}> Next

Здесь <Разм. шага> - изменение переменной - может быть как целым, так и дробным числом.

В данном случае возможен цикл с обратным порядком, уменьшением значения переменной.

Пример 12.
Программа, которая выводит на экран последовательность целых чисел от 10 до 1.

For 10→I To 1 Step -1 ↵
I
Next ↵
"END" : Stop

Пример 13.
Программа, которая выводит на экран числовую последовательность от 1 до 5 с шагом 0,01.

For 1→I To 5 Step 0.01 ↵
I
Next ↵
"END" : Stop

Пример 14.
Программа, которая находит факториал.

"N=" : ? →N ↵
1 → F ↵
For 1→I To N ↵
F × I → F ↵
Next ↵
"N!=" : F
"END" : Stop

Оператор цикла While с предпроверкой условия:

While <условие> {R} <оператор {R} > WhileEnd

Здесь:

  • While, WhileEnd - встроенные операторы (пока [выполняется условие], конец);
  • <условие> - выражение логического типа;
  • <оператор {R}> - произвольный оператор калькулятора.

Блок-схема оператора цикла While

Оператор начинает свою работу с вычисления и проверки условия. Если условие выполняется, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если условие не выполняется, то оператор цикла While прекращает свою работу.

Рассмотрим пример 13, реализованный с помощью оператора цикла While.

1 → I ↵
While I < 5 ↵
I + 0.01 → I ↵
I
WhileEnd ↵
"END" : Stop

Пример 15.
Рассмотрим следующую задачу. Даны целые числа n и m. Найти наибольший делитель этих чисел. Для решения данной задачи удобно использовать алгоритм Евклида. Идея этого алгоритма основана на том свойстве, что если m > n, то НОД(m, n) = НОД(|m-n|, n). Иначе говоря, НОД двух натуральных чисел равен НОД модуля их разности и меньшего числа. Тогда, если m = n, то НОД(m, m) = m.

Например: НОД(15, 6) = НОД(9, 6) = НОД(3, 6) = НОД(3, 3) = 3

"Введите М" : ? →М↵
"Введите N" : ? →N↵
While M≠N↵
If M>N↵
Then M-N→М↵
Else N-M→N↵
IfEnd↵
WhileEnd↵
М
"END" : Stop

Задачи

37. Ввести 10 целых чисел. Найти их среднее арифметическое.

38. Ввести 10 целых чисел. Найти их среднее геометрическое.

39. Ввести n чисел. Подсчитать сумму положительных и сумму отрицательных чисел. Найти общую сумму.

40. Ввести n чисел. Подсчитать число положительных и отрицательных чисел.

41. Ввести n чисел. Определить минимальное и максимальное число.

42. Ввести n чисел. Определить четные и нечетные числа.

43. Ввести n чисел. Определить числа, одновременно кратные 3 и 5.

44. Ввести n чисел. Определить числа, которые при делении на 5 дают остаток 2.

45. Вывести на экран ряд чисел от 10 до 30 с шагом 0, 01.

46. Дано целое число n. Вычислить:

а) 2n;

б) n!;

в) ;

г) ;

д) .

47. Дано целое число а, целое число n. Вычислить:

48. Дано вещественное число а. Найти:

а) среди чисел первое, большее а;

б) такое наименьшее n, что
первое, большее а;

в) такое наименьшее n, что
.

49. Дано вещественное число n.

а) Сколько цифр в числе n?

б) Чему равна сумма его цифр?

в) Найти первую цифру числа n.

50. Даны вещественные числа m и n. Получить сумму m последних цифр числа n.

а) Выяснить, входит ли цифра 3 в запись числа n2.

б) Поменять порядок цифр числа n на обратный.

в) Переставить первую и последнюю цифру числа.

г) Приписать по единице в начало и в конец записи числа n.

51. Пусть x1 = y1 = 1, xi = 0,3xi-1, yi = xi-1 + yi-1, i = 2, 3, ... Дано целое n. Найти
.

52. Дано целое число n. Получить наименьшее число вида 2r, превосходящее n.

53. Дано целое число n. Вычислить 1⋅2 + 2⋅3 + 3⋅4 + ... + n(n+1).

54. Вычислить

.

55. Дано целое число x ≠ 0. Вычислить

.

56. Даны целые числа n, k (nk ≥ 0). Вычислить

57. Вычислить

а)

б)

в)

г)

д)

е)

ж)

з)

(Выражение - это краткая запись произведения

.)

58. Дано целое число n. Вычислить:

а)

б)

в)

г)

д)

е)

ж)

59. Дано целое число n. Вычислить произведение первых n сомножителей:

а)

б)

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

For 1→I To N ↵
For 1→J To N ↵

Next ↵
...
Next ↵

Здесь J - внутренний цикл, I - внешний цикл, сначала закрывается внутренний цикл, затем - внешний.

Подобные конструкции работают следующим образом. В начальной момент переменной I присваивается значение 1, переменной J - значение 1. Затем выполняется тело цикла. После выполнения тела цикла переменная J увеличивает значение на 1, а переменная I остается равной 1. Затем опять выполняется тело цикла. Это повторяется до тех пор, пока значение переменной J не превысит конечного значения. После этого значение I увеличится на 1, а J станет равным 1. ... Таким образом, чтобы внешний цикл увеличил свое значение на 1,необходимо, чтобы выполнился весь внутренний цикл.

Чаще всего в программировании вложенные циклы применяются в задачах для возведения в произвольную степень. ЯПК является более совершенным языком, нежели BASIC и PASCAL, и позволяет возводить и извлекать корень любой степени, находить факториал и т.п. Поэтому целесообразно рассмотреть данные задачи с применением двойного цикла, а затем с применением стандартных функций калькулятора.

Пример 16.
Ввести целое число N. Вычислить сумму
.

Программа с применением вложенных циклов:

0 → S ↵
"Введите число членов последовательности" : ? →N ↵
For 1→I To N ↵
1÷I→ A ↵
A→ P ↵
For 2→ J To N ↵
P× A→ P ↵
Next ↵
S+Р→ S ↵
Next ↵
"Сумма степеней =" : S
"END" : Stop

Программа с применением функции возведения в произвольную степень:

0 → S ↵
"Введите число членов последовательности" : ? →N ↵
For 1→I To N ↵
(1÷I)^N→ A ↵
S+A→ S ↵
Next ↵
"Сумма степеней =" : S
"END" : Stop

Задачи

60. Ввести числа а1, …, а10. Вычислить

.

61. Ввести числа а1, ..., а10. Получить последовательность b1, ..., b10,
в которой

62. Ввести целое число n. Вычислить последовательность:

а) ;

б) ;

в) ;

г) ;

д) .

63. Ввести целое число n. Вычислить последовательность:

а) ;

б) ;

в) ;

г) ;

д) .

64. Ввести целое число n, вещественные числа а1, ... , аn. Вычислить:

а) ;

б) ;

в) ;

г) .

65. Ввести числа m и n. Получить все меньшие n числа, квадрат суммы цифр которых равен m.

66. Ввести целое число n. Определить, можно ли n представить в виде суммы квадратов трех чисел. Если можно, то:

а) указать тройку х, y, z таких целых чисел, что х2 + y2 + z2 = n;

б) указать все тройки х, y, z таких целых чисел, что х2 + y2 + z2 = n.