Одномерные массивы и вложенные циклы

  • doc
  • 13.05.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 156. Одномерные массивы и вложенные циклы.doc

Одномерные массивы и вложенные циклы

Задание 1. Для функции

при x  и  y  <  7,

в  остальных  случаях.

 

выдать на печать значения функции, большие 5.8, и определить их число.

 

Выполнение. Функция v рассчитывается по одной из двух формул в зависимости от условий: Если x и y < 7, то считается по верхней формуле – , иначе по нижней – .

У этой функции, как видно из условия, 4 аргумента: x, y, z и w. Поэтому следует рассчитать значения этой функции для всех сочетаний этих четырех аргументов. Для этого потребуется 4 вложенных друг в друга цикла: по одному для каждого аргумента. Аргумент x имеет заранее известный диапазон значений и фиксированный шаг, поэтому для него можно использовать цикл FOR-NEXT.

Аргумент y также имеет заранее известное начальное значение и конечное значение. Однако шаг переменный, поэтому цикл FOR-NEXT не применим. Вместо этого необходимо использовать один из циклов с условием, например WHILE-WEND. При этом придется явным образом (отдельной строчкой) задавать начальное значение, проверять нахождение переменной y в допустимых пределах, и отдельной строчкой, в зависимости от заданного условия, рассчитывать очередное значение y.

Аргумент z принимает 7 фиксированных значений, что видно из диапазона значений его индекса . Первое значение , каждое последующее значение  (zi+1) рассчитывается на основе предыдущего (zi) по указанной формуле . Следовательно, для перебора значений аргумента z потребуется дополнительная переменная, которая будет выполнять роль счетчика значений z. Пусть это будет переменная i. Очевидно, значения этой переменной удобно перебирать в цикле FOR-NEXT.

Аргумент w принимает 4 фиксированных значения, заданных явно. Для перебора этих значений удобно поместить их в массив в самом начале программы. Затем завести переменную-счетчик, например j, которая будет выполнять роль порядкового номера значений w и изменять его последовательно от 1 до 4 с помощью цикла FOR-NEXT.

Внутри самого вложенного цикла (цикла для w) следует рассчитывать значения функции, сравнивать их, согласно условию, с 5.8, и выводить те, которые из них больше, на экран, подсчитывая их количество. Для подсчета количества таких значений необходима переменная k. После всех циклов следует выводить значение этой переменной на экран.

 

Программа

 

1     Sub massiv_i_vlojen() 'Начало подпрограммы (макроса)

2     Dim w(4) 'Описание массива для аргумента w

3     w(1) = 5 'Задание значения для элемента 1 массива w

4     w(2) = 9 'Задание значения для элемента 2 массива w

5     w(3) = 13 'Задание значения для элемента 3 массива w

6     w(4) = 11 'Задание значения для элемента 4 массива w

7     k = 0 'Задание начального значения для счетчика k

8     For x = 10 To 14 Step 0.7 'Начало цикла для аргумента x

9     y = 9 'Задание начального значение аргумента y

10   While y <= 17 'Проверка верхнего предела аргумента y

11   z = 1.6 'Задание начального значения для аргумента z

12   For i = 1 To 7 'Начало цикла для аргумента z (счетчик - i)

13   For j = 1 To 4 'Начало цикла для аргумента w ( счетчик - j)

14   If x < 7 And y < 7 Then 'Проверка, следует ли считать функцию v по верхней или нижней формуле

15   v = (Log(y) + Tan(z)) ^ x 'Расчет v по верхней формуле

16   Else 'Иначе

17   v = Sin(z) + 1 / Tan(w(j)) ^ 2 'Расчет v по нижней формуле

18   End If 'Конец выбора между верхней и нижней формулами

19   If (v > 5.8) Then 'Проверка, слудет ли выводить текущее значений функции v на экран

20   Debug.Print "При x="; x; ", y="; y; ", z="; z; ", w="; w(j); " v="; v 'Вывод текущего значения функции v на экран

21   k = k + 1 'Увеличение счетчика выведенных на экран значений функции v на 1

22   End If 'Конец действий, относящихся к выводу значений функции v на экран и их подсчету

23   Next j 'Конец цикла для аргумента w (счетчик j)

24   z = 54 * z + Cos(z) ^ 2 'Расчет слудеющего значения аргумента z

25   Next i 'Конец цикла для аргумента z (счетчик i)

26   If y < 12 Then y = y + 1 Else y = y + 2 'Рассчет следующего значение аргумента y

27   Wend 'Конец цикла для аргумента y

28   Next x 'Конец цикла для аргумента x

29   Debug.Print "Общее число выведенных значений v="; k 'Вывод на экран общего количества выведенных на экран значений функции v

30   End Sub 'Окончание подпрограммы

 

Словесное описание программы

Прежде всего, описывается массив w из четырех элементов (с. 2), и его элементы заполняются указанными по заданию значениями (с. 3–6). Далее задается начальное значение для счетчика выведенных на экран значений функции v – переменная k (с. 7). Перебор значений аргумента x осуществляется циклом в строчках 8–27. В теле этого цикла, прежде всего, рассчитывается начальное значение для аргумента y (с. 9). Далее следует цикл для перебора значений аргумента y (с. 10–27). Перед концом цикла рассчитывается следующее значение y (с. 26), а в теле цикла, прежде всего, задается начальное значение для аргумента z (с. 11). Далее следует цикл для перебора семи значений этого аргумента z с помощью счетчика i (с. 12–25). В теле этого цикла располагается последний цикл для перебора значений аргумента w с помощью счетчика j (с. 13–23). В теле этого цикла, прежде всего, принимается решение (с. 14), по какой формуле следует рассчитывать функцию v: верхней (с. 15) или нижней (с. 17). Далее, если значение функции больше 5.8 (с. 19), то осуществляется вывод его на экран (с. 20) и увеличение счетчика таких выведенных на экран значений (с. 21). Перед завершением тела цикла для аргумента z, значения которого считаются счетчиком i, рассчитывается следующее значение z (с. 24). Вывод общего количества выведенных на экран значений функции v – переменной k осуществляется в с. 29.

 

Блок-схема

R=21

 


Скачано с www.znanio.ru