Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольные работы ТП.doc
Скачиваний:
2
Добавлен:
08.11.2019
Размер:
781.31 Кб
Скачать

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

Вычислить сумму ряда

с погрешностью .

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

Будем считать, что сумма n первых членов ряда отличается от точной суммы ряда меньше чем на величину . Следовательно, для получения результата с заданной погрешностью будем накапливать частичную сумму элементов ряда, пока очередной член ряда по модулю не станет меньше заданной погрешности .

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

Поскольку ,

а , то

То есть .

Переменная x служит для хранения входных данных, переменная y — результата вычисления.

Значение в ходе вычисления суммы ряда не меняется, поэтому значение ( ) достаточно вычислить один раз до входа в цикл (запоминается в переменной x2).

Пример реализации программы. На форму помещены 3 элемента управления: кнопка Command1 (для запуска процесса вычислений), строка ввода Text1 (для ввода x) и метка Label1 (для вывода y).

Private Sub Command1_Click()

Const eps = 0.0001 'точность вычисления

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

Dim y As Double 'сумма ряда

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

Dim x2 As Double 'минус (x в квадрате)

Dim n As Integer 'номер слагаемого

x = CDbl(Text1.Text)

y = x : r = x : x2 = –x ^ 2 : n = 2

Do

r = r * x2 / ((2 * n + 1) * (2 * n))

y = y + r

n = n + 1

Loop Until Abs(r) < eps

Label1.Caption = CStr(y)

End Sub

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

1. Операторы цикла c пред- и постусловием.

2. Операции над переменными логического типа.

3. Понятие факториала и программная реализация его вычисления.

4. Понятие рекуррентной формулы.

5. Отличие цикла Do While от Do Until.

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

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

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

Одномерный массив представляет собой набор переменных, имеющих одно имя и один тип данных. Каждая такая переменная называется элементом массива. Для обращения к определенному элементу массива служит целочисленный индекс (номер элемента в массиве).

В Visual Basic (VB) существуют статические (фиксированной размерности) и динамические массивы. Статические массивы имеют неизменную размерность, заданную при их объявлении. Размерность динамических массивов можно изменять в процессе выполнения программы.

Объявление массива фиксированного размера осуществляется следующим образом:

Dim <имя массива> (<верхняя граница массива >) As < тип элементов массива>

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

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

Dim <имя массива> (<нижняя граница массива> To <верхняя граница массива >) As < тип элементов массива>

Например, массив m с десятью целочисленными элементами объявляется следующим образом:

Dim m (1 To 10) As Integer.

Объявление динамического массива выглядит следующим образом:

Dim <имя массива> ( ) As < тип элементов массива>

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

ReDim <имя массива> (<верхняя граница массива >)

ReDim <имя массива> (<нижняя граница массива> To <верхняя граница массива >)

При выполнении оператора ReDim данные, размещенные в массиве ранее, обнуляются. Если необходимо изменить размерность массива, не потеряв при этом данные, то необходимо использовать оператор ReDim Preserve. Однако при этом можно изменить только верхнюю границу индекса массива.

Для обращения к конкретному элементу массива служит целочисленная величина — индекс. Таким образом, для обращения, например, к пятому элементу массива m, необходимо записать m(5).

Функция UBound (<имя массива>) возвращает верхнюю границу индекса массива; а функция LBound (<имя массива>) — нижнюю границу.

Элементы управления HScrollBar и VScrollBar, называемые полосами прокрутки, предназначены для выбора в наглядном виде целочисленного значения в заданном диапазоне. Элемент управления HScrollBar представляет горизонтальный ползунок, VScrollBarвертикальный ползунок. Они имеют целочисленные свойства: Value — значение, определяющее текущее положение ползунка, Min — минимальное значение, Max — максимальное значение, которое может принимать свойство Value.

Элементы управления типа HScrollBar и VScrollBar имеют следующие события:

— Change — наступает после перемещения ползунка в момент отпускания кнопки мыши или после щелчка мышью в области полосы прокрутки или на кнопках с изображением стрелок;

— Scroll позволяет получить значения свойства Value при перемещении ползунка до возникновения события Change.

Задание. Дан массив Х(n). Обработать данные в этом массиве в соответствии с вариантом.

1. Найти сумму элементов массива с четными номерами позиций.

2. Найти произведение элементов массива с нечетными номерами позиций.

3. Найти среднюю величину отрицательных элементов массива.

4. Найти число положительных элементов массива.

5. Найти число нулевых элементов массива.

6. Найти сумму положительных элементов массива.

7. Найти произведение отрицательных элементов массива.

8. Найти отношение суммы элементов с четными номерами позиций, к сумме элементов с нечетными номерами позиций.

9. Разделить элементы массива с четными номерами позиций на произвольное число b ¹ 0, введенное с клавиатуры.

10. Циклически сдвинуть элементы массива на две позиции вправо.

11. Заменить элементы массива равные нулю на произвольное число k ¹ 0, введенное с клавиатуры.

12. Циклически сдвинуть элементы массива на две позиции влево.

13. Определить сумму элементов массива с номерами от k до m (k m n).

14. Элементы массива с нечетными номерами позиций умножить на произвольное число k, введенное с клавиатуры.

15. Сдвинуть элементы массива на три позиции влево, записав в последние три элемента единицы.

16. Элементы с номерами позиций кратными трем умножить на произвольное число k, введенное с клавиатуры.

17. Вычислить скалярное произведение векторов X и X.

18. Образовать массив D из целых четных чисел, находящихся в массиве X.

19. В массиве найти произведение элементов, с номерами позиций, кратными пяти.

20. Элементы массива с номерами позиций, равными степени два, умножить на заданное пользователем число k.

21. Попарно первые пять элементов массива X сложить с последними пятью элементами этого же массива. Занести результат в массив Y.

22. Записать элементы массива X в обратном порядке. Результат должен быть размещен в массиве X.

23. Найти сумму элементов массива, расположенных после последнего элемента, равного нулю. При отсутствии элемента, равного нулю, выдать соответствующее сообщение.

24. Найти среднее арифметическое всех четных элементов массива.

25. Найти произведение элементов массива, расположенных перед первым элементом, равным нулю. При отсутствии элемента, равного нулю, выдать соответствующее сообщение.