Пользовательский интерфейс VBA 5 страница
Таблица 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
Все элементы массива имеют общее имя (имя массива) и различаются индексами. Элементами массива могут быть данные любого типа. Тип элементов массива называется базовым. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Тип индекса определяет границы изменения значений индекса.
2.12.1 Объявление массива
Массивы должны быть объявлены до их использования в программе.
Синтаксис:
Dim | Public | Private Имя_Массива (Размерность_Массива) As Тип_Данных
где
Dim | Public | Private – ключевые слова, декларирующие массив
и область его видимости;
Имя_Массива – идентификатор, определяющий имя массива;
Размерность_Массива – значение нижней и верхней границы значения
индекса (номера) соответствующей размерности.
Допускается описание до 60 размерностей.
As – ключевое слово, предваряющее указание типа
элементов массива;
Тип_Данных – любой, действительный для VBA тип данных
(базовый или созданный пользователем).
Пример 1.
Dim A (7) As Integer
Объявляется одномерный массив (вектор) А из 8 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(7).
При объявлении многомерного массива в поле индекса указывается несколько индексов в соответствии с размерностью массива.
Пример 2.
Dim B (4, 5) As Single
Объявляется двумерный массив В 4 х 5 (матрица), состоящая из 5 строк и 6 столбцов действительных чисел.
По умолчанию значение нижнее границы массива при таком объявлении равно нулю. В этом случае говорят, что 0 – базовый индекс массива. Можно изменить базовый индекс, написав в области описания модуля (General Declarations) инструкцию Option Base 1. После этого индексы массивов А и В будут нумероваться с единицы.
Другим способом изменения базового индекса является использование ключевого слова To при объявлении массива.
Пример 3.
Dim A (1 To 7) As Integer
Dim B (1 To 4, 1 To 5) As Single
В этом примере базовому индексу массива установлено значение 1.
Подобным образом моно устанавливать как положительные, так и отрицательные базовые индексы
Пример 4.
Dim Z (-3 To 7) As Single.
2.12.2 Динамические массивы
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать его размерность.
Пример 1.
Dim R () As Single.
Затем в программе следует вычислить необходимое количество элементов массива и сохранить его в некоторой переменной, например n, а затем изменить размер динамического массива с помощью оператора ReDim.
Пример 2.
ReDim R (1 To 3).
Синтаксическая конструкция переопределения массива:
ReDim [Preserve] Имя_Массива (Размерность_Массива) As Тип_Данных
где
ReDim – ключевое слово, указывающее, что переопределяются размеры массива;
Preserve – необязательное ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности. Если оно не используется, то данные в массиве при изменении размерности не сохраняются.
Имя_Массива – имя массива, удовлетворяющее стандартным правилам именования переменных;
Размерность_Массива - значение нижней и верхней границы значения индекса (номера) соответствующей размерности (до 60). Если отсутствует инструкция Option Base, нижняя граница индекса по умолчанию равна 0.
Тип_Данных – тип данных массива.
Пример 3.
Dim A () As Integer ‘Объявление динамического массива
Dim n As Integer ‘Объявление переменной, для хранения размерности
N = 9 ‘Инициализация значения
Дата добавления: 2016-03-22; просмотров: 1546;