Печатать книгуПечатать книгу

Лабораторная работа. Основы работы в VBA. Алгоритмическая структура - цикл

Рассмотрены принципы программирования вычислительного процесса циклической структуры на языке программирования Visual Basic for Application, рассмотрены приемы программирования алгоритмов циклической структуры с несколькими одновременно изменяющимися параметрами, рассмотрены типовые задачи с использованием циклических процессов.


Сайт: Электронный университет КГЭУ - виртуальная образовательная среда
Курс: Информационные и компьютерные технологии (Бикеева Н.Г.)
Книга: Лабораторная работа. Основы работы в VBA. Алгоритмическая структура - цикл
Напечатано:: Гость
Дата: Tuesday, 18 June 2024, 16:17

1. Понятие цикла

Цель работы

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


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

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

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

1) задать перед циклом начальное значение переменной, изменяющейся в цикле;

2) произвести необходимые действия;

3) изменить переменную на величину шага;

3) проверить условие окончания (или повторения) цикла;

4) переходить к п.2, если цикл не закончен.

Последние четыре действия повторяются многократно. Переменная, изменяющаяся в цикле, называется параметром цикла. Действия, повторяемые многократно, называются телом цикла.

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

         Возможны три способа организации циклических структур алгоритмов:

         1) цикл “повторять ... до” (цикл с постусловием);

         2) цикл “пока” (цикл по условию или цикл с предусловием);

         3) счетный цикл (цикл с управляющей переменной).

         Схема реализации таких циклов представлена на рис. 1.

 

Рис. 1. Схемы организации циклов:

а – цикл с постусловием (проверка условия после тела цикла),

б – цикл с предусловием (проверка условия перед телом цикла),

в – счетный цикл (цикл с известным числом повторений)

 

         В VBA циклы можно задать двумя способами:

         – с использованием оператора цикла FOR ... NEXT;

         – с использованием оператора цикла DO ... LOOP;


2. Оператор цикла For ... Next

Цикл For...Next используется, когда необходимо повторить действие или ряд действий заданное количество раз, известное до начала выполнения цикла.

Цикл For...Next имеет следующий синтаксис:


For счетчик = Начало To Конец [Step Шаг]

      [Операторы цикла]

Next счетчик

 Счетчик – любая переменная, по которой организован цикл.

В квадратных скобках указан не обязательный параметр.

По умолчанию VBA увеличивает счетчик на 1 каждый раз при выполнении операторов в цикле (шаг по умолчанию равен 1). Если нужно другое значение шага надо включать в оператор For необязательное ключевое слово Step.

При выполнении цикла For...Next VBA поступает следующим образом:

– присваивает значение Начало счетчику;

– выполняет все операторы, представленные с помощью Операторы цикла, пока не достигнет ключевого слова Next, которое указывает VBA на то, что достигнут конец тела цикла;

– изменяет счетчик на величину Шаг (если включается необязательное ключевое слово Step); если Step не определено, то VBA увеличивает переменную на 1;

– возвращается к началу цикла и сравнивает текущее значение счетчика со значением Конец. Если значение счетчика меньше или равно Конец, VBA выполняет цикл снова. Если значение счетчика больше значения Конец, VBA продолжает выполнение кода с первого оператора после ключевого слова Next.

Если Шаг >0, то такой цикл называется циклом с возрастающим счетчиком, если Шаг <0 – цикл с убывающим счетчиком. В последнем случае Начало должно быть больше Конец.

         Цикл For...Next выполняется только в том случае, если начальное значение счетчика цикла плюс шаг изменения значения счетчика меньше или равно конечному значению счетчика. Если конечное значение счетчика меньше начального значения, то шаг должен быть отрицательным. Цикл выполняется до тех пор, пока текущее значение счетчика не выйдет за рамки конечного значения. При завершении текущего цикла к значению счетчика прибавляется значение шага. Если начальное значение и конечное значение счетчика имеют одно и то же значение, цикл выполняется один раз, вне зависимости от значения шага. Если шаг равен нулю, цикл продолжается неопределенное количество раз.

         Пример. Построить  и заполнить таблицу значениями функции \( y= \frac{2,51 sin x}{ \sqrt[3]{2+3 cos x} } \) на интервале 16°≤x≤40° с шагом 4°

 

Sub Demo_ForNext()  

' Объявляем начало, конец цикла, шаг

Dim xStart, xEnd, xStep As Integer    

Dim x As Integer

Dim i As Integer

Dim xradian, y As Single

' Чтение числовых значений из рабочего листа Excel

xStart = Cells(2, 2)

xEnd = Cells(3, 2)

xStep = Cells(4, 2)

' Номер строки заголовка таблицы значений функции

i = 1                    

For x = xStart To xEnd Step xStep

' Вычисляем значение x в радианах

xradian = 3.14 * x / 180 

' Вычисляем значение функции

y = (2.51 * Sin(xradian) / (2 + 3 * Cos(xradian)) ^ (1 / 3))

i = i + 1

' Передаем полученные значения в рабочий лист

Cells(i, 4) = x

Cells(i, 5) = y

Next  x

End Sub

  

         При исполнении оператора For...Next автоматически осуществляется проверка условия продолжения цикла, изменяется значение аргумента на величину шага и осуществляется переход к строке, следующей за строкой с оператором FOR, если величина переменной цикла меньше или равна ее конечному значению.


3. Оператор неопределенного цикла Do ... Loop

         Все неопределенные циклы строятся с помощью одного оператора цикла – Do. Оператор Do имеет много опций и является настолько гибким, что в действительности он предоставляет четыре различных конструкции цикла в двух базовых категориях.

Две базовые категории конструкций цикла Do – это циклы, которые тестируют условие до выполнения тела цикла, и циклы, которые тестируют условие после выполнения тела цикла.

 – цикл Do ... Loop с проверкой условия в начале:

          В приведенном цикле проверка осуществляется через ключевое слово While. Цикл работает пока условие истинно. Как только условие становится ложным, цикл прекращает свою работу.  

          Do While  условие

         [блок_операторов]

         Loop

        В приведенном цикле проверка осуществляется через ключевое слово Until. Цикл работает пока условие ложно. Как только условие становится истинным, цикл прекращает свою работу.  

          Do Until условие

         [блок_операторов]

         Loop

 – цикл Do ... Loop с проверкой условия в конце:

          Do

         [блок_операторов]

         Loop While условие

 

         Do

         [блок_операторов]

         Loop Until условие

    Таким образом, общий вид цикла DoLoop можно представить в виде:

 

Цикл “ПОКА”

Цикл “ДО”

цикл

с пост-

условием

parametr =  начало

shag = шаг

Do

[блок операторов – тело цикла]

parametr = parametr + shag

Loop While условие

 

parametr =  начало

shag = шаг

Do

[блок операторов – тело цикла]

parametr = parametr + shag

Loop Until условие

 

цикл

с пред-

условием

parametr =  начало

shag = шаг

Do While условие

[блок операторов – тело цикла]

parametr = parametr + shag

Loop

 

parametr =  начало

shag = шаг

Do Until условие

[блок операторов – тело цикла]

parametr = parametr + shag

Loop

 

 

Здесь parametr – переменная, по которой организован цикл (параметр цикла); shag – шаг изменения значения переменной цикла.

 Пример 1. Построить  и заполнить таблицу значениями функции \( y= \frac{2,51 sin x}{ \sqrt[3]{2+3 cos x} } \) на интервале 16°≤x≤40° с шагом 4°.

          – решение с использованием ключевого слова While (цикл с предусловием):

 

Sub Demo_Do_While_Loop()

Dim xStart, xEnd, xStep As Integer

Dim x As Integer

Dim i As Integer

Dim xradian, y As Single

xStart = Cells(2, 2)

xEnd = Cells(3, 2)

xStep = Cells(4, 2)

i = 1

x = xStart

' Пока x<= 40 выполняются следующие действия:

Do While x <= 40

xradian = 3.14 * x / 180

y = (2.51 * Sin(xradian) / (2 + 3 * Cos(xradian)) ^ (1 / 3))

i = i + 1

Cells(i, 4) = x

Cells(i, 5) = y

x = x + xStep

' Окончание цикла

Loop

End Sub

 

– решение с использованием ключевого слова While (цикл с постусловием):

 

Sub Demo_Do_Loop_While()

Dim xStart, xEnd, xStep As Integer

Dim x As Integer

Dim i As Integer

Dim xradian, y As Single

xStart = Cells(2, 2)

xEnd = Cells(3, 2)

xStep = Cells(4, 2)

i = 1

x = xStart

' Начало цикла

Do

xradian = 3.14 * x / 180

y = (2.51 * Sin(xradian) / (2 + 3 * Cos(xradian)) ^ (1 / 3))

i = i + 1

Cells(i, 4) = x

Cells(i, 5) = y

x = x + xStep

' Повторить действия, пока x<= 40

Loop While x <= 40

End Sub

 

         – решение с использованием Until (с предусловием):

 

Sub Demo_Do_Until_Loop()

Dim xStart, xEnd, xStep As Integer

Dim x As Integer

Dim i As Integer

Dim xradian, y As Single

xStart = Cells(2, 2)

xEnd = Cells(3, 2)

xStep = Cells(4, 2)

i = 1

x = xStart

' Выполнять действия, пока x не превысит 40

Do Until x > 40

xradian = 3.14 * x / 180

y = (2.51 * Sin(xradian) / (2 + 3 * Cos(xradian)) ^ (1 / 3))

i = i + 1

Cells(i, 4) = x

Cells(i, 5) = y

x = x + xStep

' Конец цикла

Loop

End Sub

        

– решение с использованием Until (с постусловием):

 

Sub Demo_Do_Until_Loop()

Dim xStart, xEnd, xStep As Integer

Dim x As Integer

Dim i As Integer

Dim xradian, y As Single

xStart = Cells(2, 2)

xEnd = Cells(3, 2)

xStep = Cells(4, 2)

i = 1

x = xStart

' Начало цикла

Do

xradian = 3.14 * x / 180

y = (2.51 * Sin(xradian) / (2 + 3 * Cos(xradian)) ^ (1 / 3))

i = i + 1

Cells(i, 4) = x

Cells(i, 5) = y

x = x + xStep

' Повторить действия, пока x не превысит 40

Loop Until x > 40

End Sub

          Пример 2. Вычислить с помощью цикла наибольшее положительное число n, удовлетворяющее условию \( 4 \cdot n^3-n^2 +3 \cdot n<2,5 \cdot10^8 \).

          Решение.

 Sub task()

Dim n As Integer

n = 1

' Выполнять действия, пока истинно условие:

Do While 4 * n ^ 3 - n ^ 2 + 3 * n < 250000000#

n = n + 1

Loop

MsgBox "Наибольшее целое " & n - 1, , "Ответ задачи"

End Sub

Результата выполнения программы:

 

4. Типовые задачи с использованием операторов цикла. Вычисление суммы

Вычисление конечной суммы сводится к нахождению суммы заданного количества слагаемых:

\( S=f(1)+f(2)+. . . +f(n)= \sum_{i=1}^{n}{f(i)} \),

где i – номер слагаемого; f(i) – слагаемое с номером i.

         Вычисление организуется в виде циклического алгоритма, когда при каждом прохождении цикла номер слагаемого i увеличивается на 1, а сумма изменяется на величину i-го слагаемого:

 \( S_i = S_{i-1} +f(i) \)

         Цикл повторяется до тех пор, пока не будут просуммированы все n слагаемых. Для того, чтобы начальное содержимое ячейки суммы не исказило результат, сумма предварительно должна быть обнулена (\( S_0 = 0 \)). Вывод результата, поскольку он является единственным, осуществляется после окончания работы цикла.

         Алгоритм нахождения суммы представлен на рис. 2.

              

Рис. 2. Вычисление суммы                        Рис. 3. Вычисление произведения

         Пример 1. Вычислить сумму ряда N натуральных чисел.

 Sub Demo_Summa()

Dim i As Integer

Dim sStart, sEnd  As Integer

Dim Sum As Long

sStart = 1

sEnd = InputBox("Введите длину ряда:", "Запрос программы")

Sum = 0

For i = sStart To sEnd

Sum = Sum + i

Next i

MsgBox "Сумма чисел от " & sStart & " до " & sEnd & " равна " & Sum, , "Решение задачи"

End Sub

  

         Решим эту же задачу с использованием цикла DoLoop.

 

Sub Demo_Summa()

Dim i As Integer

Dim sStart, sEnd  As Integer

Dim Sum As Long

sEnd = InputBox("Введите длину ряда:", "Запрос программы")

sStart = 1

i = sStart

Sum = 0

Do

Sum = Sum + i

i = i + 1

Loop While i <= sEnd

MsgBox "Сумма чисел от " & sStart & " до " & sEnd & " равна " & Sum, , "Решение задачи"

End Sub

          Пример 2. Вычислить сумму ряда натуральных чисел, кратных произвольно заданному числу М и подсчитать их количество.

 

Sub Demo_Summa()

Dim n, m, i, u As Integer

n = InputBox("Введите длину ряда ", "Запрос первого параметра")

m = InputBox("Введите число М ", "Запрос второго параметра")

summa = 0                          'обнуление переменной суммы

j = 0                               'обнуление счетчика количества чисел

For i = 1 To n

u = i

' Накапливаем сумму, если число кратно М

If i Mod m = 0 Then

     summa = summa + u  

' Подсчет количества чисел, кратных М           

     j = j + 1                   

     End If                        

Next i

MsgBox "Сумма равна " & summa & ", " & "Количество элементов " & j, , "Решение задачи"

End Sub

  

         В данном примере для выбора чисел, кратных М используется оператор Mod, который вычисляет остаток от деления. Если число кратно М, то остаток от деления на М равен нулю. Обратите также внимание на использование блочной формы оператора If.

5. Типовые задачи с использованием операторов цикла. Вычисление произведения

         Вычисление конечного произведения представляет собой процесс нахождения произведения заданного количества сомножителей по формуле

\( P=f(1) \cdot f(2) \cdot . . . \cdot f(n) = \Pi_{i=1}^{n}{f(i)} \) 

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

\( P(i)=P_{i-1} \cdot f(i) \) 

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

         Алгоритм нахождения произведения представлен на рис. 3.

Пример 1. Вычислить факториал числа N.

         Формула для вычисления факториала имеет вид:

\( y=n! = 1 \cdot 2 \cdot 3 \cdot . . . \cdot n = \Pi_{i=1}^{n}{i} \)  

         Как видно из формулы, вычисление факториала числа N сводится к нахождению произведения n сомножителей.

 

Sub Demo_Proizvedenie()

Dim n, i, u As Integer

Dim p As Double

n = InputBox("Введите число n= ", "Запрос программы")

p = 1

For i = 1 To n

u = i

p = p * u

Next i

MsgBox "Факториал чисел от 1 до  " & n & " равен " & p, , "Решение задачи"

End Sub

 

6. Вычисление суммы бесконечного убывающего ряда с заданной точностью. Итерационные циклы

         Задача сводится к нахождению суммы

 \( S=u(1)+u(2)+. . . +u(n)= \sum_{i=1}^{ \infty }{u(n)} \),

каждое слагаемое, которой является функцией от номера n, определяющего место этого слагаемого в сумме, а также может являться функцией одного или нескольких дополнительных параметров.

         Вычисление суммы ряда состоит в получении в результате циклического процесса последовательности u(1), u(2), ..., u(n), ..., сходящейся  к своему предельному значению, т. е. \( \frac{lim}{ n \rightarrow \infty } u(n)=S \). Здесь u(n) – сумма n членов бесконечного ряда.

         Для вычисления суммы ряда используется рассмотренный выше прием накопления суммы: суммирование считается законченным при выполнении условия достижения заданной погрешности ε: |u(n)| ≤ ε. Задача нахождения суммы ряда является типичным примером итерационного процесса, так как заранее не известно, при каком числе членов ряда будет достигнута требуемая точность.

         Процесс вычисления определяется рекуррентным соотношением (т.е. к предыдущему значению прибавляется текущее) u(n)=u(n-1)+u(n). Алгоритм нахождения суммы ряда показан на рис 4.

 

Рис. 4. Вычисление суммы ряда

 В приведенной блок-схеме для вычисления суммы ряда используется рассмотренный выше прием накопления суммы. Только теперь суммирование считается законченным тогда, когда выполнится условие – значение члена ряда станет меньше заданной погрешности ε: |u(n)| ≤ ε.

         Для организации такого итерационного цикла (т.е. цикл с заранее неизвестным числом повторений) применяется оператор Do...Loop. Именно здесь проявляется удобство этого оператора, поскольку, используя, оператор For...Next, поставленную задачу решить не удается – For...Next – оператор цикла с заранее заданным числом повторений.

         Пример 1. Составить программу вычисления приближенного значения числа p, используя равенство 

\( \frac{ \pi^2 }{6} =1+ \frac{1}{2^2} + \frac{1}{3^2} + . . . +\frac{1}{i^2}= \sum_{i=1}^{ \infty }{ \frac{1}{i^2}} =S \).

 Вычисления закончить, когда значение последнего члена ряда не станет меньше 0, 0000001. Определить длину приближенного ряда.

Из условия задачи задаем погрешность ε = 0, 0000001. Число π находим по формуле \( \pi= \sqrt{6 \cdot S } \) , где S – сумма ряда, которую необходимо вычислить. Для поиска суммы S применим цикл “ДО” с постусловием.


 Sub Demo_Pi()

Dim i As Integer

Dim e, s, u, Pi As Single

i = 1

s = 0

' Задаем точность вычисления

e = 0.0000001

Do

' Вычисляем значение текущего члена ряда

u = 1 / i ^ 2

s = s + u

i = i + 1

Loop Until Abs(u) < e

Pi = Sqr(s * 6)

MsgBox "Число Пи равно " & Pi & ", число итераций равно " & i - 1, , "Решение задачи"

End Sub

 

 

Пример 2. Составить программу вычисления суммы бесконечного ряда

 \( z=1- \frac{x^2}{2} + \frac{x^4}{4} - . . . +(-1)^n \frac{x^{2n}}{2n}= 1+\sum_{i=1}^{ \infty }{ (-1)^n \frac{x^{2n}}{2n}} =S \).,

 при x<1 с точностью до члена ряда, меньшего заданной точности ε<<1.

 

Sub Demo_summa_ryada()

Dim n As Integer 'счетчик

Dim x As Single  'аргумент

Dim z As Double   'сумма

Dim u As Double    'член ряда  

Dim e As Double     'точность вычислений

x = InputBox("Введите х < 1  - ", "Запрос аргумента ряда")

e = InputBox("Введите погрешность  E<<1 -", "Запрос точности вычисления")

z = 0

n = 1

Do

' Вычисляем значение текущего члена ряда

u = (-1) ^ n * x ^ (2 * n) / (2 * n)

z = z + u

n = n + 1

Loop While Abs(u) >= e

z = z + 1      'прибавляем к вычисленной сумме первый член ряда

MsgBox "Сумма ряда равна  " & z, , "Решение задачи"

End Sub

 


7. Сложные циклические процессы. Вложенные циклы

         Тело любого цикла может, в свою очередь, содержать операторы цикла. Если цикл включает в себя один или несколько циклов, то он представляет собой сложный циклический процесс. Цикл, содержащий внутри себя циклы, называется внешним циклом, а цикл, содержащийся в другом цикле, – внутренним (вложенным).

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

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

         Пример 1. Вычислить сумму \( S= \sum_{n=1}^{10}{ \frac{x^n}{n} } \) для х, изменяющегося от 0,5 до 1,4 с шагом 0,1.

 

Sub Demo_tab()

Dim i, n As Integer

Dim s, u As Single

i = 1

' Цикл построения таблицы значений функции

For x = 0.5 To 1.4 Step 0.1

' Цикл нахождения суммы

s = 0

     For n = 1 To 10

     u = x ^ n / n

     s = s + u

     Next n

i = i + 1

Cells(i, 1) = x

Cells(i, 2) = s

Next x

End Sub

 

 

         Пример 2. Построить  и заполнить таблицу значениями функции

 \( y= \frac{\sqrt {x^2+a^2}}{x-a} \)

 на отрезке 4≤ a≤6 с шагом 1 для аргумента х, изменяющегося от 3 до 5 с шагом 0,5. Точку х=а исключить.

 

Sub Demo_tab()

Dim i, a As Integer

Dim x, y As Single

i = 1

For a = 4 To 6 Step 1

     For x = 3 To 5 Step 0.5

' Вычисляем значение функции, если знаменатель не ноль

     If x <> a Then

          y = Sqr(x ^ 2 + a ^ 2) / (x - a)

     End If

     i = i + 1

     Cells(i, 2) = x

     Cells(i, 3) = y

     Cells(i, 1) = a

     Next x

     i = i + 1  ' вставляет пустую строку между разными а

Next a

End Sub

 


8. Задания на выполнение лабораторной работы

 Табулирование функций

          1. Составить программу вычисления значений функции на заданном отрезке  (табл. 1) с использованием оператора цикла For ... Next

Таблица 1


         Все вычисления проводить в радианах. По полученной таблице значений x, y  построить график y=f(x)  функции в тетради.

          2. Составить таблицу аргументов и значений составной функции


в интервале изменения аргумента х от -2 до 2 с шагом 0,1

          3. Функция задана как дискретная последовательность членов ряда:

\( a_n= \frac{1}{n^2+5} \).

Вычислить первые десять членов этой последовательности.

Вычисление суммы и произведения

        

1. Составить программу вычисления суммы

а) четных чисел;

б) нечетных чисел;

в) кратных 4.

 

       2. Составить программу вычисления суммы геометрической прогрессии \( а_{i+1}=a_i \cdot q, q=0,5, i=1,2,3, . . . ,7 \):

\( S=1+ \frac{1}{2} + \frac{1}{4}+ ... + \frac{1}{128}= \sum_ {i=0}^{7}{ \frac{1}{2^i} } \)

         Результат проверить по формуле геометрической прогрессии \( S_n = a_1 (q^n - 1) \).

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

        4. Составить программу вычисления степени с натуральным показателем \( y=a^n \) по формуле \( a^n=a \cdot a \cdot . . . \cdot a = П_{i=1}^{n}{a} \). Значения a и n выбрать произвольно. Результат проверить с помощью оператора Бейсика для вычисления степени  Y=A ^ N.

        5. Составить программу вычисления приближенного значения функции y = sin x, используя равенство

\( y=x \cdot (1- \frac{x^2}{ \pi^2 } ) \cdot (1- \frac{x^2}{ 2^2 \cdot \pi^2 } ) \cdot (1- \frac{x^2}{ 3^2 \cdot \pi^2 } ) \cdot . . . \cdot \cdot (1- \frac{x^2}{ 10^2 \cdot \pi^2 } ) = x \cdot П_{i=1}^{10}(1- \frac{x^2}{ i^2 \cdot \pi^2 } ) \)

при х=0,5. Для контроля вывести на печать значение sin x.

 Итерационные циклы 

         1. Вычислить сумму членов для следующего ряда с точностью до члена ряда, меньшего ε (табл. 2).

Таблица 2


         При решении задачи воспользоваться циклом Do Until ... Loop для четных вариантов и Do ... Loop While для нечетных вариантов.

        2. Вычислить наибольшее положительное число n, удовлетворяющее условию

\( 3 \cdot n^5-690 \cdot n \leq7 \).

          3. Составить программу вычисления таблицы значений функции

\( y=1-e^{-ax} sin(ax+b) \)

на отрезке 0≤ x≤2π с шагом \( \frac{ \pi }{6} \)  для b=-1,5 и a, изменяющейся от 0,7 до 1,2 с шагом 0,1.

 

         4. Вычислить сумму  \( P=1+ \sum_{i=1}^{50}{ \frac{x^n}{n!} } \approx e^x \) . Результат проверить с помощью оператора y=Exp(x) при том же значении аргумента х.

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

        

         5. Последовательность степенного ряда задана формулой ее n-го числа bn = qn, где q = 0,4. Составить программу вычисления суммы членов указанного убывающего степенного ряда и определить номер n, начиная с которого можно считать, что n-ый член ряда qn  ≈ 0, с точностью до 10-4.

          6. Написать программу вычисления суммы членов бесконечного числового ряда

\( S= \frac{1}{1 \cdot 3 } + \frac{1}{1 \cdot 5 } +\frac{1}{1 \cdot 7 } + . . . = \sum_{i=1}^{ \infty }{ \frac{1}{(2i-1) \cdot (2i+1) } } \)

с погрешностью ε=10-3. Определить количество членов ряда.

         7. Написать программу вычисления суммы членов бесконечного функционального ряда

\( S=x- \frac{x^2}{2 } + \frac{x^3}{3 } -\frac{x^4}{4 } + . . . = \sum_{i=1}^{ \infty }(-1)^{i+1}{ \frac{x^i}{i } } \)

для х=0,5 с погрешностью ε=10-5.



9. Контрольные вопросы


         1 Что такое цикл? Какие существуют способы организации цикла в программе?        

         2. В чем состоят преимущества использования операторов цикла в программе?

3. Указать последовательность действий, выполняемых при организации циклических участков с заданным числом повторений.

         4. Чем отличаются циклы с предусловием и с постусловием?   

5. Циклы ДО и ПОКА, различие между ними.

         6. Какие данные необходимы для организации цикла? Что такое управляющая переменная цикла (параметр цикла)?

         7. Перечислить возможные способы организации цикла с заданным числом повторений в языке VBA.

         8. Перечислить возможные способы организации цикла с заранее неизвестным числом повторений в языке VBA.

         9. Приведите словесный алгоритм табулирования функции.

         10. Перечислить действия при решении задач на накопление суммы.

         11. Перечислить действия при решении задач на нахождение произведения.

         12. Каким принимается начальное значение суммы при вычислении суммы ряда и почему?

         13. Перечислить действия, реализуемые для организации цикла с несколькими одновременно изменяющимися параметрами.