Лекция: End Sub 4 страница
Цель: приобретение навыков программирования алгоритмов циклической структуры с помощью подпрограммы-процедуры, позволяющую вычислять сумму (произведение) конечного ряда с помощью операторов цикла с параметром, с предусловием, с постусловием. Индивидуальные варианты лабораторной работы № 4 представлены в таблицах 19, 20 (2 часа).
Таблица 19
| № В | Варианты индивидуальных заданий | |
| Разработать подпрограмму процедуру, вычисляющую сумму (произведение) конечного ряда | ||
Продолжение таблицы 19
Таблица 20
| № В | Варианты индивидуальных заданий |
| Разработать экономическую пользовательскую процедуру | |
| Вычислить 5 значений уровня цен на автомобили на рынке, если объем денежной массы остается неизменным. P=M*V/Q где P — уровень цен; M — объем денежной массы; V — скорость обращения денег; Q — количество обращающегося товара. |
Продолжение таблицы 20
| Мы положили в банк 10000 р. на 5 лет при ставке 10% в год. Текущая стоимость составляет 10000 р. Вычислить ежегодную прибыль FV=PV*(1+R)^N где FV — прибыль; PV — текущая стоимость; R — ставка процента; N — число лет. |
| Рассчитать реальную заработную плату VP по формуле VP=VN/P. Если уровень цен P меняется от P1 до P2, шаг изменения уровня цен = 1. где Р1 — начальный уровень цен; P2 — конечный уровень цен; VP — заработная плата; VN — номинальная заработная плата; Р — уровень цен. |
| Рассчитать какой доход получит владелец акции, купив ее по рыночной цене P, если рыночная цена изменяется на 300 денежных единиц каждый год, а дивиденд на акцию фиксирован. Доход на акцию рассчитывается по формуле: ДОХОД = ДИВИДЕНД*100/РЫНОЧНАЯ ЦЕНА АКЦИИ |
| Начислить сумму износа по объекту основных средств за 6 месяцев, если дана первоначальная стоимость объекта, годовая норма в %, используя формулу: износ за 1 месяц = первонач.стоимость*норму годовую/12 мес т.е. I = S * N/12 где I — сумма износа за месяц; S — первоначальная стоимость; N — норма годовая (8.9%). |
| Оформлен депозитный вклад в банке на сумму 5 млн.р. при ставке (R) 10% в год. Составить программу, вычисляющую будущую стоимость вклада (FV), если известно, что текущая стоимость (PV) составляет 10 млн. р., а число лет, на которые оформлен вклад равно 5. |
| В 1626 г индейцы продали о.Манхеттен за 20$. Если бы эти деньги были помещены в банк под 4% в год, то какова была бы стоимость капитала в 1996 г? |
| Выявление зависимости экономической ситуации от величины Спроса (С) и Предложения (P), по формуле: C = F*Q, P = F*S где F — коэффициент функциональной зависимости; Q, S – цена. |
Продолжение таблицы 20
| Рассчитать темпы роста безработицы с A года по B год и в целом за данный период по формулам: C = (D-E)/D*100, F=D-J/D*100 где C — темп роста безработицы в A+I+1 году; D — индекс безработицы в A+I+1 году; E — индекс безработицы в A+I году; F — на сколько выросла безработица в период с A по B годы, где A = 1990 год, B = 1993 год. |
| В фирме работают 20 человек, каждый из них получает разную зарплату: 5 из них получают 800.000 рублей, 7 из них получают 500.000 рублей, 8 из них получают 300.000 рублей, нужно вы числить среднюю зарплату всех рабочих, по формуле: P = K/N где P — средняя зарплата рабочих, K — количество получаемых денег; N — количество людей получающих деньги. |
| Определить рыночную стоимость облигаций по формуле PV = сумма (I = 1… N) P/(1+ R) где PV — рыночная стоимость облигации; P – доход; R — процент от облигаций; N — количество лет. |
| Как будет меняться прибыль предприятия при изменении цены за единицу продукции, если объём выпускаемой продукции и себестоимость за единицу продукции останутся неизменными: объём выпуска — 1500 ед.; себестоимость за единицу продукции – 1004; начальное значение цены – 140; конечное значение цены – 200; шаг изменения цены – 20. |
| Вычислить среднемесячный уровень безработицы в течении года, используя формулу: уровень безработицы = среднемесячная численность безработных /численность рабочей силы Учитывая, что численность рабочей силы растет, увеличиваясь каждый раз на 2 процента. |
| Пенсионерка положила в банк в январе 1995 года 500 тыс.р. Сколько она возьмет через полгода (18 месяцев), если банк начисляет 5 процентов в месяц? |
Продолжение таблицы 20
| Вычислить доход на акцию предприятия, учитывая, что дивиденд на акцию изменяется в течение некоторого времени с [DN, DK] с шагом H. Y = ((D*D+1)/D)*100% где D – дивиденд. |
| Вычислить среднегодовую стоимость (Сс) оборудования за период с момента окончания планового срока лизингового соглашения до полной амортизации оборудования на начало года по формуле Сс = (Сн+Ск)/2*Т где Сн — стоимость оборудования на начало года; Ск — стоимость оборудования на конец года; Т — период с момента окончания планового срока лизингового соглашения до полной амортизации оборудования. |
| Цех располагает 50 ткацкими станками, из которых 30 работают в течение 20 лет. 12 в течение 6 лет, 8 в течение 6 лет. Вычислить средний возраст оборудования. |
| Вычислить процентные деньги с N рублей за t дней по формуле: A = N*P%*t/100%*360 где A — процентные деньги; t — число дней; P — ставка процента. |
| Списан автомобиль грузоподъемностью до 2 тонн. Первоначальная стоимость автомобиля составляла 10000 рублей, норма амортизации за месяц составляла 1.4% в месяц. Вычислить сумму амортизации на автомобиль за любой месяц первых пяти лет по формуле: S = P*N*K/100% где К — количество месяцев; P — цена машины; N — норма амортизации; S — сумма амортизации. |
| Вычислить средний возраст оборудования, вычисляемый по отношению общей суммы лет фактической эксплуатации всех машин f к количеству единиц этого оборудования м, где t-средний возраст оборудования, лет. |
2.11 Табулирование функции
2.11.1 Табулирование функции одной переменной
Постановка задачи. На отрезке [a,b] с шагом h протабулировать функцию f(x)=x2+Ln|x| и вывести на печать значения этой функции.
Технология выполнения задания:
Для решения задачи в области определения функции вводится сетка – совокупность точек {x0,x1,x2, …, xi}, где x0= а, x1= x0+h, …, xi = xi-1+h, xn = b.
Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить f(x0), f(x1), …, f(xi), f(xn).
I вариант
1 Введем обозначения:
хn, xk – границы отрезка;
h – шаг;
х – точка;
f – значение функции в точке.
2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл For:
Sub primer()
Dim x As Single
Dim xn As Single
Dim xk As Single
Dim h As Single
Dim f As Single
xn = InputBox(«xn=», xn)
xk = InputBox(«xk=», xk)
h = InputBox(«h=», h)
For x = xn To xk Step h
f = x ^ 2 + Log(Abs(x))
f = Format(f, "##.####")
x = Format(x, "##.##")
Debug.Print " x= " & x & " f= " & f
Next x
End Sub
II вариант
1 Введем обозначения:
хn, xk – границы отрезка;
h – шаг;
х – точка;
f – значение функции в точке .
2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя итерационный цикл:
Sub primer ()
Dim x As Single
Dim xn As Single
Dim xk As Single
Dim f As Single
Dim h As Single
xn = InputBox(«xn=», xn)
xk = InputBox(«xk=», xk)
h = InputBox(«h=», h)
x = xn
Do
f = x^2+log(ABS(x))
Debug.Print «x= » & x & " f= " & f
x = x + h
Loop While x <= xk
End Sub
2.11.2 Табулирование функции двух переменных (вложенные циклы)
Постановка задачи. На интервале xn≤x≤xk с шагом Δх, для каждого у из интервала уn≤y≤yk с шагом Δу вычислить значение функции z=x2+ln|y|.
Технология выполнения задания:
Для решения задачи в области определения функции вводится разностная сетка {хi, yi}, где x0= xn, x1 = x0+hx, …, xi = xi-1+hx, …, xn=xk; y0= yn, y1 = y0+hy, …, yj = yj-1+hy, …, ym=yk.
— количество узлов сетки по оси х,
— количество узлов сетки по оси y.
Тогда задача сводится к вычислению функции z в точках xi и yj, то есть z(xi,yj), то есть z(xi,yj)=x2+ln|y|, где i=1,2,… n, j=1,2, … m.
I вариант:
1 Введем обозначения:
х,y – координаты узла сетки;
f – значение функции в нем;
хn, xk,yn,yk – границы отрезка;
hх,hy – шаги сетки.
2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя цикл For:
Sub primer()
Dim x As Single
Dim xn As Single
Dim xk As Single
Dim yn As Single
Dim yk As Single
Dim f As Single
Dim hx As Single
Dim hy As Single
xn = InputBox(«xn=», xn)
xk = InputBox(«xk=», xk)
yn = InputBox(«yn=», yn)
yk = InputBox(«yk=», yk)
hx = InputBox(«hx=», hx)
hy = InputBox(«hy=», hy)
For y = yn To yk Step hy
For x = xn To xk Step hx
f = x^2+log(ABS(у))
Debug.Print «x= » & x & " y= " & y & " f= " & f
Next x
Next y
End Sub
II вариант
1 Введем обозначения:
х,y – координаты узла сетки;
f – значение функции в нем;
хn, xk,yn,yk – границы отрезка;
hх,hy – шаги сетки.
2 Набрать в стандартном модуле проекта следующую пользовательскую процедуру, используя итерационный цикл:
Sub primer ()
Dim x As Single
Dim xn As Single
Dim xk As Single
Dim yn As Single
Dim yk As Single
Dim f As Single
Dim hx As Single
Dim hy As Single
xn = InputBox(«xn=», xn)
xk = InputBox(«xk=», xk)
yn = InputBox(«yn=», yn)
yk = InputBox(«yk=», yk)
hx = InputBox(«hx=», hx)
hy = InputBox(«hy=», hy)
y = yn
Do
x = xn
Do While x <= xk
f = x^2+log(ABS(x))
Debug.Print «x= » & x & " y= " & y & " f= " & f
x = x + hx
Loop
y = y + hy
Loop Until y > yk
End Sub
Лабораторная работа № 5
Табулирование функции
Цель: приобретение навыков программирования вычисления значений функции вида y=f(x) на промежутке [a,b] с шагом h и z=f(x,y) на промежутке [a,b] и [c,d] с шагом hx и hy с помощью пользовательской подпрограммы-процедуры. Индивидуальные варианты лабораторной работы № 5 представлены в таблице 21 (2 часа).
Таблица 21
| № В | Варианты индивидуальных заданий |
| Разработать пользовательскую процедуру вычисления значения выражения | |
| Вычислить 7 значений функций, где начальное значение а=0.14х, шаг а=0.22 |
Продолжение таблицы 21
| На интервале и с шагом и протабулировать функцию |
| Для каждого при всех с шагом вычислить, х=0.792 |
| На интервале с шагом протабулировать функцию |
| На интервале с шагом для каждого «b» из интервала с шагом протабулировать функцию |
| Для каждого с шагом при всех вычислить, причём, если,, иначе |
| На интервале с шагом определить количество отрицательных значений функции, где а=0.8х, b=2.2х |
| Для каждого с шагом вычислить по 6 значений функции, где начальное значение, а шаг |
| На интервале протабулировать функцию, причём шаг, где, х=0.44 |
| Для каждого с шагом при всех, вычислить, причём, если, то, иначе, х=0.087 |
Продолжение таблицы 21
| На интервале с шагом протабулировать функцию где х=0.881, а=0.96, в=1.44 |
| Для каждого с шагом вычислить по 4 значения, где начальное значение, а шаг, х=1.44 |
| На интервале с шагом для которого из интервала с шагом протабулировать функции,, а1=0.74, b1=1.56, а2=0.22, b2=0.88, х=0.567 |
| На интервале протабулировать функцию, причём, если, то, иначе, х= 0.416 |
| Для каждого с шагом вычислить по 4 значения, где начальное значение z=0.2, а шаг |
| На интервале с шагом протабулировать функцию: где; х=0.14 |
| На интервале с шагом для каждого z из интервала с шагом протабулировать функции; х=1.15 |
Продолжение таблицы 21
| Для каждого с шагом вычислить по 5 значений, где начальное значение, шаг, х=0.548 |
| На интервале с шагом для каждого из интервала с шагом протабулировать функции и, где х=0.833 |
| На интервале протабулировать функцию, причём, если, то, иначе, а=1.18, b=2.44, х=0.564 |
2.12 Массивы
В VBA различают два вида переменных – простые переменные и переменные структурного типа. Простые переменные служат для идентификации и резервирования памяти для одного данного. Переменные структурного вида предназначены для идентификации и резервирования памяти для нескольких данных. Частным случаем переменной структурного вида является массив.
Массивы – это формальное объединение нескольких однотипных элементов (чисел, символов, строк и т.д.), упорядоченных по индексам, определяющим положением каждого элемента в массиве.
Пример 1.
Результаты многократных замеров температуры воздуха в течение одного года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект, — массив измерений.
Значения температур в марте
| Число | |||||||
| Т, 0С | -10 | -9 | -11 | -5 | +3 | -1 | +4 |
Первая ячейка содержит значение температуры 1 марта, что можно обозначить Т [1] = -10; Т [2] = -9 и т.д. Заметим, что все ячейки таблицы содержат однотипные данные (Т).
Пример 2.
Таблица, содержащая однотипные данные – классный журнал со списком учащихся, где каждая ячейка определяется двумя значениями – фамилией ученика и датой, а в ячейку заносятся отметки – целые числа от 1 до 5.
Определение.
Массив – это совокупность конечного числа элементов одного и того же типа, в которой каждый элемент имеет номер, а все элементы – общее имя.
Массивом называется ряд ячеек памяти, отведенных для хранения индексной переменной.
Массив – это структура данных, состоящая из фиксированного числа компонентов одного и того же типа, называемого базовым.
Номер элемента массива называется его индексом.
Если в форме описания массива задан один индекс, массив называется одномерным, если два индекса – двумерным, если n индексов – n-мерным.
Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный – понятию прямоугольной таблицы (матрицы, набору векторов). Размерность ограничена только объемом памяти конкретного компьютера.
Характеристики массива:
1 Тип – общий тип элементов массива;
2 Размерность – количество индексов массива;
3 Диапазон – количество допустимых значений каждого индекса;
4 Размер – количество элементов массива.
Пример 3.
xi (5, 6, 7) → размер – 3
размерность – 1
тип – integer
диапазон – 1..3
Все элементы массива имеют общее имя (имя массива) и различаются индексами. Элементами массива могут быть данные любого типа. Тип элементов массива называется базовым. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Тип индекса определяет границы изменения значений индекса.