Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8569

.pdf
Скачиваний:
1
Добавлен:
25.11.2023
Размер:
1.73 Mб
Скачать

 

 

 

 

10

 

n3 5n2

7n 14 2cos n

 

 

 

 

 

10

 

 

 

 

 

 

n x

 

 

 

 

 

 

 

 

 

 

 

 

 

3

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

Pn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

5

2n

3

4n 11

n

x 1

5n

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10 n4 10n3 8n2 15n 2n 7

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nsin n

 

 

 

 

4

 

 

 

 

 

 

 

3n

5

 

 

2n

3

n 17

 

14

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

nsin n 5n 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

sin nx cosnx

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

cos

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

5

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

Pn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

3

 

4n 5

 

 

 

 

 

 

 

 

 

 

 

1

 

n n2

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

cos

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

2n (x 3)n

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

6

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

Sn ln 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

2n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

sin x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

2n 1

 

 

 

 

 

 

 

 

 

 

7

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(n 1) 2

n

 

 

 

 

 

 

 

 

 

 

n

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

(n 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

n(x 1)2n

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

8

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

Sn (

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

)

 

9n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

2

 

(n 1)

2

 

 

 

 

n5 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

x

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

Sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

(2n 3)

7

 

 

 

 

 

 

3

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

2n2 1

n

 

 

 

 

 

 

 

 

 

 

 

10

 

 

2n 3

 

 

 

 

 

 

 

 

 

 

10

S

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

S

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2n 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

3n

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

 

 

 

 

 

31

Лабораторная работа 4. Циклические алгоритмы в VBA с

использованием циклов с условием

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

Теоретические сведения

Операторы циклов с условием

В VBA для организации циклов с заранее неизвестным числом повторений используются оператор цикла с условием. VBA располагает несколькими операторами циклов с условием (While-Wend и вариации оператора Do-Loop).

Оператор цикла While-Wend

В этом операторе цикла с предусловием сначала проверяется условие и до тех пор пока оно истинно будет выполняться тело цикла. Синтаксис оператора цикла While-Wend:

While «условиие»

«блок_операторов»

Wend

Пример:

Sub тест_цикла пока()

S=0

While x<10

S=S+x

MsgBox S

Wend

End Sub

1. Цикл Do-Loop

32

Цикл Do-Loop может быть как «с предусловием» так и «с пост

условием» (Таблица 4). Оператор выполняется до тех пор, пока «условие»

имеет значение True.

 

Таблица 4

 

Цикл Do-Loop

 

 

Конструкция цикла

Описание

Do While ... Loop

Цикл с предусловием выполняется до тех

 

пор, пока условие «истинно»

Do Until ... Loop

Цикл с предусловием выполняется до тех

 

пор, пока условие «ложно»

Do ... Loop While

Цикл с постусловием выполняется до тех

 

пор, пока условие «истинно»

Do ... Loop Until

Цикл с постусловием выполняется до тех

 

пор, пока условие «ложно»

Синтаксис операторов Do-Loop:

Do While «условиие»

«блок_операторов»

[Exit Do]

«блок_операторов»

Loop

Пример подсчета ячеек столбца A до тех пор, пока не встретится

пустая ячейка. Функция IsEmpty определяет, пуста ячейка или нет.

Sub Пример1()

Dim I As Integer i = 1

Do While Not IsEmpty(Cells(i, 1))

i = i + 1

Loop

MsgBox i – 1

End Sub

33

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

Sub Пример2()

Dim i As Integer i = 1

Do

i = i + 1

Loop While Not IsEmpty(Cells(i, 1)) And Cells(i, 1) <> 2

MsgBox i – 1

End Sub

Оператор Do until-Loop выполняется до тех пор, пока «условие» имеет

значение False. Синтаксис оператора Do until-Loop:

Do Until «условиие»

«блок_операторов»

[Exit Do]

«блок_операторов»

Loop

Пример подсчитать значение ячеек столбца A до тех пор, пока не встретится пустая ячейка.

Sub Пример3()

Dim i As Integer

i = 1

Do Until IsEmpty(Cells(i, 1))

i = i + 1

Loop

MsgBox i – 1

End Sub

Операторы Do-Loop while и Do-Loop until выполняются как минимум один раз, т.к. сначала выполняется цикл, а затем проверяется его условие.

34

Оператор Exit Do

Оператор Exit Do обеспечивает досрочный выход из оператора цикла.

Можно прерывать ход выполнения не только циклов, но и процедур и функций. Синтаксис оператора Exit Do:

Do

«блок_операторов»

[Exit Do]

«блок_операторов»

Loop While «условиие»

Do

«блок_операторов»

[Exit Do]

«блок_операторов»

Loop Until «условиие»

Практические задания

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

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

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

3.Вычислять и выводить в ячейки рабочего листа члены арифметической прогрессии до тех пор, пока очередной член прогрессии не окажется большим 50. Первый член арифметической прогрессии равен 2,

разность равна 5;

35

4. Вычислять и выводить в ячейки рабочего листа члены геометрической прогрессии до тех пор, пока очередной член прогрессии не окажется большим 250. Первый член геометрической прогрессии равен 3,

знаменатель равен 4;

 

 

 

 

 

 

 

5.

Общий член последовательности задан формулой: an

n2 / 5 .

Вычислить сумму n первых членов последовательности, меньших 75.

 

 

 

6.

Общий

член

последовательности

задан

формулой: a

 

 

5n

.

n

 

 

 

 

 

 

 

 

n2 1

 

 

 

 

 

 

 

 

Вычислить сумму n первых членов последовательности, больших 1;

 

 

 

 

7.

Общий

член

последовательности

задан

формулой:

n

2n 1 .

5

 

 

 

 

 

 

 

 

 

Суммировать первые n членов последовательности, до тех пор, пока сумма не окажется большей 100. Вывести значение суммы и последнего n-го члена последовательности;

8. Общий член последовательности задан формулой: a

 

 

n

n 4 .

n

 

 

3

 

 

 

 

Вычислять произведение первых n членов последовательности до тех пор,

пока произведение не окажется большим 1000. Вывести значение произведения и последнего n-го члена последовательности;

9.Первый член арифметической прогрессии равен -50, разность равна

7.Вывести в ячейки рабочего листа все члены данной арифметической прогрессии, меньшие нуля;

10.Первый член арифметической прогрессии равен 90, разность равна -

8.Вычислить сумму всех положительных членов данной арифметической прогрессии.

36

Лабораторная работа 5. Одномерные массивы

Цель: овладеть навыками программирования с использованием одномерных массивов на языке VBA.

Теоретические сведения

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

обозначаемая одним именем.

Все элементы массива имеют одно и то же наименование ‒ наименование массива. К элементу массива можно обратиться, указав имя массива и индекс (номер) этого элемента, записанный в круглых скобках и может быть числом, переменной или выражением.

Например: А(10), В(I,J), SUM(1,J+5).

Если для выделения элемента массива нужен один индекс, то массив называется одномерным, два индекса ‒ двумерным. Число элементов массива называется длиной или размером массива. Одномерный массив называется вектором. Двумерный массив называется матрицей.

Объявление массивов

Для объявления массива используется оператор Dim. Синтаксис оператора Dim:

Dim VarName([Subscripts]) [As Type]

VarName ‒ имя массива.

Subscripts ‒ измерение массива (Subscripts разделяются запятыми).

Синтаксис Subscripts:

[lower To] upper [,[lower To] upper]..

lower ‒ необязательный аргумент, который определяет нижний

диапазон индекса массива;

37

upper ‒ необязательный аргумент, который определяет верхний предел

массива.

Type – тип данных из которых состоит массив.

Массивы в VBA могут быть фиксированного размера (статические) или динамические. У массива с фиксированным размером, заданный при его объявлении размер не изменяется. При объявлении такого массива в круглых скобках после его имени указывается верхняя граница массива. Нижняя граница массива по умолчанию равна нулю.

Пример объявления статического массива:

Dim Array (1 To 10) As Integer ‒ явное задание границ одномерного статического числового массива, состоящего из 10 элементов.

Dim A(9) As Integer ‒ объявление массива фиксированного размера,

где массив с именем А имеет 10 элементов.

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

Пример: Dim К() As Integer

Изменение размерности динамического массива

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

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

Синтаксис оператора ReDim:

38

ReDim [Preserve] varname(subscripts) [As Type] [,

varname(subscripts) [As Type]]

varname ‒ имя массива; subscripts ‒ размерность массива;

Type ‒ тип данных;

Preserve ‒ необязательный аргумент, который влияет на то что,

имеющиеся в массиве данные после изменения его размерности

сохраняются.

Пример одномерного динамического массива: ReDim А(5).

ReDim Preserve А(I + 1) позволяет изменить размер массива, но при этом не потерять данные, при использовании вместе с оператором ReDim с

ключевого слова Preserve.

Пример использования оператора ReDim:

ReDim Preserve M(1 To 3) ‒ при сохранении содержимого массива изменяется размер массива М до 3-х элементов.

Ввод/вывод массивов

Ввод/вывод массива осуществляется поэлементно, а для этого нужно использовать цикл.

Пример ввода элементов массива с клавиатуры

For i=1 to 5

А(i)= InputBox(“Ввести элемент массива”)

Next

Пример ввода элементов массива из ячеек первого столбца электронной

таблицы

For i = 1 To 5

S(i) = Worksheets("лист1").Cells(i, 1)

Next

Ввод элементов массива генератором случайных чисел ‒ Rnd[ (Number)].

39

Функция случайных чисел Rnd возвращает значения в диапазоне от 0

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

Randomize.

Пример: сформировать массив в диапазоне от 1 до 50.

Randomize()

For i=1 to 20

A(i)= Int ( (50-1+1) * Rnd) + 1)

Next

Вывод массива в ячейки электронной таблицы

Для вывода массива в ячейки электронной таблицы используется оператор Worksheets, в котором указывается имя листа и параметр Cells

определяет номер строки и столбца куда вводится массив. Пример ввода массива в ячейки электронной таблицы:

For i = 1 To 5

Worksheets("лист1").Cells(i, 2) = А(i)

Next

Обнуление числового массива

Любой числовой массив (статический или динамический) можно очистить с помощью оператора Erase.

Пример обнуления массивов

Dim A(3,4) As String, B() As Variant

……

‘определение динамического массива

ReDim B(2,3)

……

‘очищение массива

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]