Прежде, чем выполнять вычисление средних значений, необходимо считать данные из текстовых полей, которые их содержат. Для этого надо запустить цикл от 1 до 32 (количество записей в каждом столбце таблицы), который бы вводил значения из текстовых полей в массивы. Так как необходимо, чтобы описанные выше операции выполнялись при нажатии на кнопку, то в процедуру Command1_Click () введем код:
For i = 1 To 32 mag(i) = Text1.Text mas(i) = Text2.Text ma(i) = Text3.Text maq(i) = Text4.Text maw(i) = Text5.Text mar(i) = Text6.Text maz(i) = Text7.Text
Data1.Recordset.MoveNext
Next i i – ППППППППППППППППППxППППППППППППППППППППППППППППППППППППППППППППППППППППППППП ПППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППППП ППППППППППППППrПППППППППППППППППППППППППППППППППППППППППППППППППППППППППППпе ременная, mag(i), mas(i), ma(i), maq(i), maw(i), mar(i) и maz(i) – соответственно массивы со значениями года, размера ВВП, цены на нефть, размера потребления нефти, размера ВТО, объема промышленного производства и размером дохода на душу населения. Запись Data1.Recordset.MoveNext означает, что после выполнения считывания данных за первый год Data1 передвинет данные в текстовых полях на одну вперед и считывание будет проводиться уже за следующий год и т. д.
Но может случиться так, что после запуска пользователь осуществит нажатие один или несколько раз на элемент Data1 до того, как нажать на командную кнопку. Это приведет к сбою программы, потому что в данном случае в коде, приведенном выше, запись, находящаяся в текстовом поле будет восприниматься как первая, а так как записей всего 32, то это приведет к невозможности завершения цикла. Чтобы избежать этого, перед данным кодом поместим строку:
Data1.Recordset.MoveFirst
Эта запись обеспечит передвигание данных в текстовых полях к первой записи перед выполнением считывания.
Для нахождения средних значений данных за 4-летние периоды, необходимо сумму значений за каждый год из данного периода разделить на количество лет в периоде, то есть в данном случае - на 4. Поэтому в процедуру Command1_Click () введем следующий код: j = 1 For i = 1 To 32 Step 4 h(j) = (mas(i) + mas(i + 1) + mas(i + 2) + mas(i + 3)) / 4 q(j) = (ma(i) + ma(i + 1) + ma(i + 2) + ma(i + 3)) / 4 w(j) = (maq(i) + maq(i + 1) + maq(i + 2) + maq(i + 3)) / 4 p(j) = (maz(i) + maz(i + 1) + maz(i + 2) + maz(i + 3)) / 4 r(j) = (mar(i) + mar(i + 1) + mar(i + 2) + mar(i + 3)) / 4 x(j) = (maw(i) + maw(i + 1) + maw(i + 1) + maw(i + 3)) / 4 j = j + 1
Next i
j – переменная; массивы h(j), q(j), w(j), p(j), r(j) и x(j) – соответственно массивы, содержащие средние значения данных за периоды с 1960 по 1963 год, с 1964 по 1967 год и т. д.
Запись For i = 1 To 32 Step 4 означает, что в каждый последующий массив ввод данных будет производиться с элемента, номер которого на 4 больше номера первого элемента предшествующего массива, то есть в первый массив – с первого по четвертый элемент, во второй – с пятого (номер которого на 4 больше номера первого) по восьмой и т. д. до 32.
После вычисления средних значений данных за 4-летние периоды необходимо, чтобы пользователь мог увидеть полученные величины. Для этого вставим в форму элементы управления ListBox, в которых будут отображаться средние значения данных. Над каждым элементом разместим метки, содержащие названия данных, отображаемых в данном списке. В итоге получится шесть списков, над каждым из которых имеется метка с названием. Для вывода средних значений данных из массивов в списки в процедуру Command1_Click () введем следующий код:
For i = 1 To 8
List2.List(i - 1) = h(i)
List3.List(i - 1) = q(i)
List4.List(i - 1) = w(i)
List5.List(i - 1) = p(i)
List6.List(i - 1) = r(i)
List7.List(i - 1) = x(i)
Next i После запуска программы при нажатии командной кнопки в списках появятся средние значения данных за 4-летние периоды, начиная с 1960 года.
Согласно заданию, после рассчета средних значений, необходимо занести их в файл. Для удобства пользователя сделаем так, чтобы он имел возможность сам выбирать тот файл, в который будут занесены средние значения. Для этого разместим в первой форме элементы DriveListBox, DirListBox и FileListBox, отображающие соответственно диск, каталог и файл для записи данных. С помощью этих элементов пользователь после запуска программы выберет файл для записи средних значений данных. После того, как он сделает это, необходимо произвести запись в файл, указанный пользователем, средних значений показателей, рассчитанных до этого. Создадим командную кнопку, при нажатии на которую средние значения записывались бы в файл. Для нее в окне свойств в графе Caption установим значение ‘Запись средних значений в файл’. Введем в процедуру Command2_Click () следующий код:
Open File1 For Output As #1
Write #1, h(i), q(i), w(i), p(i), r(i), x(i)
Close #1 Первая строка данного кода открывает файл, выбранный пользователем для записи в элементе FileListBox. А последующие строки записывают в него средние значения и после окончания записи закрывают файл.
Согласно заданию, следующие операции необходимо производить в другой форме. Поэтому создаем в проекте еще одну форму, для которой в окне свойств в графе Caption вводим значение ‘Определение темпов изменения ВВП, периода max прироста и сост. 50%’. Для того, чтобы во время работы программы можно было из первой формы перейти ко второй, в первой форме необходимо создать кнопку, которая обеспечивала бы этот переход. Создав командную кнопку, для нее в окне свойств в графе Caption установим значение ‘Кнопка перехода к следующему этапу программы’. Чтобы при нажатии на эту кнопку после запуска программы осуществлялся переход ко второй форме, необходимо в процедуру Command3_Click () ввести следующий код:
Form1.Hide
Form2.Show Эти команды скроют первую форму и сделают видимой вторую форму.
Согласно заданию, во второй форме необходимо считать файл со средними значениями показателей. Для того, чтобы сделать это, надо, чтобы пользователь указал файл, в который записаны эти данные. Для этого используем элементы DriveListBox, DirListBox и FileListBox. Разместим их во второй форме рядом с меткой, объясняющей пользователю, что он должен указать файл со средними значениями. После того, как пользователь сделает это, необходимо считать данные из файла. Для этого создадим командную кнопку, для которой в окне свойств в графе Caption введем значение ‘Считывание данных из файла, определение ВВП и темпов его изменения’. Как видно из названия кнопки, с ее помощью мы будем определять размер ВВП и находить темпы его изменения, что также требуется в задании.
Для того, чтобы считать данные из файла, указанного пользователем, необходимо ввести в процедуру Command1_Click () следующий код:
Open File1 For Input As #1
Input #1, a1(i), a2(i), a3(i), a4(i), a5(i), a6(i)
L1.List(i - 1) = a1(i)
Close #1
Строка L1.List(i - 1) = a1(i) обеспечивает вывод в список, размещенный во второй форме, значений ВВП.
Согласно заданию, после того, как значения ВВП будут считаны из файла, необходимо рассчитать темпы изменения ВВП. Чтобы определить темп изменения ВВП или его прирост, надо из значения ВВП, соответствующего последующему месяцу, вычесть значение ВВП в предыдущем месяце. Для рассчета темпов изменения ВВП введем в процедуру Command1_Click () следующий код: j = 1
For i = 1 To 8 t(j) = a1(i + 1) - a1(i) j = j + 1
For i = 1 To 7
L2.List(i - 1) = t(i)
Next i Запись L2.List(i - 1) = t(i) выводит во второй список, размещенный в форме, данные о приросте ВВП.
Согласно заданию, далее необходимо рассчитать период максимального прироста и период, дающий 50% прироста ВВП. Чтобы определить, какие это периоды, создадим во второй форме командную кнопку, для которой в окне свойств в графе Caption Установим значение ‘Нахождение периода max прироста и периода прироста в 50%’. Создадим 2 текстовых поля, первое из которых будет отображать размер максимального прироста ВВП, а второе – период такого прироста. Чтобы сделать эти текстовые поля недоступными для ввода информации во время работы программы, в процедуру Form_Load введем коды:
T1.Enabled = False
T2.Enabled = False T1 и T2 – соответственно названия первого и второго текстовых полей.
Создадим 2 аналогичных текстовых поля для вывода значений прироста ВВП, составляющего 50%, и периода с таковым приростом ВВП.
В процедуру Command2_Click() введем код для нахождения периода и значения максимального прироста ВВП:
Max = 0
If t(i) > Max Then
Max = t(i) p = i
End If
T1.Text = Max Эта часть кода определяет значение максимального прироста и выводит его в первое текстовое поле. Переменная p является счетчиком, с помощью которого мы определяем период максимального прироста ВВП:
If p = 1 Then
T2.Text = "1964 - 1967 гг."
If p = 2 Then
T2.Text = "1968 - 1971 гг."
If p = 3 Then
T2.Text = "1972 - 1975 гг."
If p = 4 Then
T2.Text = "1976 - 1979 гг."
If p = 5 Then
T2.Text = "1980 - 1983 гг."
If p = 6 Then
T2.Text = "1984 - 1987 гг."
If p = 7 Then
T2.Text = "1988 - 1991 гг."
End If Эта часть кода анализирует значение переменной p и, в зависимости от ее значения выводит во второе текстовое поле данные о периоде максимального прироста.
Если прирост ВВП составляет 50%, это означает, что отношение значения ВВП последующего периода к значению ВВП предыдущего периода составляет 1.5. Поэтому для определения прироста ВВП в 50% и периода, дающего такой прирост, необходимо рассчитать отношение прироста ВВП последующего периода к предыдущему по всем периодам. Чтобы сделать это, введем в процедуру Command2_Click () следующий код: j = 1
Страницы: 1, 2, 3, 4