- •ОБЩИЕ СВЕДЕНИЯ
- •ЛАБОРАТОРНАЯ РАБОТА 5
- •ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ
- •Основные сведения
- •Задания к лабораторной работе 5
- •ЛАБОРАТОРНАЯ РАБОТА 6
- •ОДНОМЕРНЫЕ МАССИВЫ
- •Основные сведения
- •Задание к лабораторной работе 6
- •ЛАБОРАТОРНАЯ РАБОТА 7
- •ДВУМЕРНЫЕ МАССИВЫ
- •Основные сведения
- •Задания к лабораторной работе 7
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •ОГЛАВЛЕНИЕ
Окончание таблицы 8
№ |
Задание |
|
п/п |
||
|
Доход от сдачи в аренду одной из четырех квартир за 2006 г. составил 120 тыс. р., доход от сдачи в аренду второй квартиры за этот же год на 2 % превысил доход от сдачи в аренду первой, третьей – на 4 % больше, чем доход от сдачи в аренду второй, а четвер-
14той – на 8 % больше, чем доход от сдачи в аренду третьей квартиры. Известно, что доход от сдачи в аренду каждой из четырех квартир за 2007 г. вырос по сравнению с предыдущим годом на 15 %, а за 2008 – на 30 % по сравнению с 2007 г. Определить доход предприятия в целом, полученный за каждый из трех годов, начиная с 2006 г., и суммарный доход предприятия за три года.
Определить, какое количество специалистов каждой категории может принять на работу предприятие, если ежемесячная зарплата специалиста первой категории составляет 15
15тыс. р., ведущего специалиста – 20 тыс. р., а главного специалиста – 25 тыс. р. и если количество штатных единиц должно быть равно 35 при ежемесячных расходах на зарплату 625 тыс. р.
ЛАБОРАТОРНАЯ РАБОТА 6
ОДНОМЕРНЫЕ МАССИВЫ
Основные сведения
Массив – это упорядоченная совокупность определенного количества однотипных переменных с общим именем и разными индексами. Каждая такая переменная – элемент массива. Количество элементов в массиве – размер массива.
Одномерный массив представляет собой упорядоченный набор пронумерованных элементов одного типа, которые расположены в одной строке или столбце. Элемент массива обозначается путем указания имени массива и индекса, заключенного в круглые скобки, например, Х(7).
Для объявления массива используется оператор Dim:
Dim Имя_Массива (Размерность_Массива) As Тип_Элементов
В этом случае нумерация элементов массива начинается с нуля. Для нумерации элементов массива, например, с единицы используется запись
Dim Имя_Массива (1 To Размерность_Массива) As Тип_Элементов Для изменения границ массива используется оператор ReDim:
ReDim Имя_Массива (Размерность_Массива)
Пример
Известны данные о численности населения (в миллионах жителей) 12 государств: Страна. Численность населения. Необходимо разработать пользовательскую форму и составить программу в редакторе VB MS Excel, с помощью которой будет осуществляться:
1)ввод исходных данных и их вывод в виде таблицы на рабочий лист;
17
2)определение государства, в котором проживает больше всего жителей, а также количество и название стран, в которых численность населения составляет от 10 до 50 миллионов жителей;
3)вставка записи о численности населения еще одного государства, которая должна быть расположена после записи, соответствующей государству с наибольшим числом населения;
4)сортировка полученных данных по полю Страна в алфавитном порядке. Пусть пользовательская форма будет иметь вид, представленный на рис. 12.
Рис. 12. Таблица и форма «Численность населения европейских государств»
Свойства объектов формы представлены в таблице 9.
|
|
|
|
|
Таблица 9 |
|
|
|
|
|
Объект |
|
|
Объект |
Свойство |
|
Свойство |
|||
CommandButton1 |
Name = inputOutputData |
|
|
CommandButton4 |
Name = calc |
|
Caption = Ввод и вывод данных |
|
|
Caption = Рассчитать |
|
||
CommandButton2 |
Name = add |
|
|
CommandButton5 |
Name = clean |
|
Caption = Добавить запись |
|
|
Caption = Очистить |
|
||
CommandButton3 |
Name = sort |
|
|
CommandButton6 |
Name = exitForm |
|
Caption = Отсортировать |
|
|
Caption = Выход |
|
||
UserForm1 |
Caption = Численность населения европейских государств |
|
||||
Значения массива, соответствующего названиям стран, будут считываться с рабочего листа MS Excel. Для этого необходимо данные названия предварительно ввести в ячейки первого листа (рис. 12). А значения массива, отвечающего за численность населения, будем вводить с помощью функции InputBox.
Для обработки события нажатия кнопки «Ввод и вывод данных» введем следующий код:
18
Dim NazvGos(1 To 13) |
As |
String |
‘объявление типа переменных |
|
Dim |
KolNasel(1 To 13) As Single |
|
||
Dim |
SizeM, NomerMax, |
i, |
k As Integer |
|
Private Sub InputOutputData_Click() SizeM = 12
For i = 1 To SizeM ‘ввод элементов массивов
NazvGos(i) = Worksheets("Лист1").Range("A" & i + 1).Value KolNasel(i) = Val(InputBox("Введите численность населения страны " &
NazvGos(i) & " в млн. чел.", "Ввод данных"))
Cells(i + 1, 2) |
= |
KolNasel(i) |
‘вывод элементов |
массива |
|||
Next i |
To SizeM |
+ 1 |
‘задание формата |
ячеек таблицы |
|||
For |
i |
= 1 |
|||||
If |
i |
= 1 |
Then |
|
|
|
|
‘начертание |
шрифта |
|
|
|
|
||
Worksheets("Лист1").Range("A" & i).Font.FontStyle = "полужирный" ‘горизонтальное выравнивание
Worksheets("Лист1").Range("A" & i).HorizontalAlignment = xlCenter Worksheets("Лист1").Range("B" & i).Font.FontStyle = " полужирный" Worksheets("Лист1").Range("B" & i).HorizontalAlignment = xlCenter
End If
‘задание стиля границ ячеек
Worksheets("Лист1").Range("A" & i).Borders.LineStyle = xlContinuous Worksheets("Лист1").Range("B" & i).Borders.LineStyle = xlContinuous
‘числовой формат ячейки
If i>1 Then Worksheets("Лист1").Range("B" & i).NumberFormat = "0.000" Next i
End Sub
При нажатии на кнопку «Рассчитать» на первый лист ниже таблицы будет выводиться название государства, в котором проживает больше всего жителей, а также количество и название стран, в которых численность населения составляет от 10 до 50 млн. жителей. Код для обработки события нажатия кнопки «Рассчитать» имеет вид:
Private Sub calc_Click() Dim maxKN As Single
maxKN = KolNasel(1) k = 0
Cells(SizeM + 3, 1) |
= "Наиболее населенная |
страна" |
||||||
Cells(SizeM |
+ |
4, |
1) |
= |
Число стран |
с населением 10-50 млн.чел." |
||
Cells(SizeM |
+ |
5, |
1) |
= |
" |
а |
именно:" |
|
For i = 1 To SizeM
‘поиск максимального элемента и его номера по массиву «Численность населения»
If KolNasel(i) > maxKN Then maxKN = KolNasel(i): NomerMax = i
If (KolNasel(i) |
> 10) And (KolNasel(i) < 50) Then |
|||
k |
= k + 1 |
4 + k, 2) = NazvGos(i) |
‘определение количества и |
|
Cells(SizeM + |
‘названий стран с населением |
|||
End |
If |
|
|
‘от 10 до 50 млн.чел. |
Next |
i |
2) |
= NazvGos(NomerMax) |
|
Cells(SizeM + 3, |
|
|||
Cells(SizeM + 4, |
2) |
= Str(k) |
|
|
End Sub
19
При нажатии на кнопку «Добавить запись» на втором листе будет выводиться таблица, содержащая информацию о численности населения 13 стран, т. е. после записи, соответствующей государству с наибольшим числом населения, еще будет вставлена следующая запись «Болгария 10,392». Для обработки события нажатия кнопки «Добавить запись» введем следующий код:
Private Sub add_Click()
For i = SizeM + 1 To NomerMax + 2 Step -1 ‘раздвигаем элементы массива
NazvGos(i) = NazvGos(i - 1) |
|
KolNasel(i) = KolNasel(i - 1) |
|
Next i |
‘вставляем элемент |
NazvGos(NomerMax + 1) = "Болгария" |
|
KolNasel(NomerMax + 1) = 10.392 |
‘переход на «Лист2» |
Worksheets("Лист2").Select |
|
Cells(1, 1) = "Страна" |
|
Cells(1, 2) = "Численность населения (млн.чел.)" |
|
For i = 1 To SizeM + 1 |
‘вывод массивов на новый лист |
Cells(i + 1, 1) = NazvGos(i) |
|
Cells(i + 1, 2) = KolNasel(i) |
|
Next i |
‘задание формата ячеек таблицы |
For i = 1 To SizeM + 2 |
|
If i = 1 Then |
& i).Font.FontStyle = "полужирный" |
Worksheets("Лист2").Range("A" |
|
Worksheets("Лист2").Range("A" |
& i).HorizontalAlignment = xlCenter |
Worksheets("Лист2").Range("B" |
& i).Font.FontStyle = "полужирный" |
Worksheets("Лист2").Range("B" |
& i).HorizontalAlignment = xlCenter |
End If |
i).Borders.LineStyle = xlContinuous |
Worksheets("Лист2").Range("A" & |
|
Worksheets("Лист2").Range("B" & |
i).Borders.LineStyle = xlContinuous |
If i>1 Then Worksheets("Лист2").Range("B" & i).NumberFormat = "0.000" Next i
End Sub
При нажатии на кнопку «Отсортировать» будет выполняться сортировка массивов по названиям стран в алфавитном порядке, а результат сортировки будет выведен на третий лист. Код для обработки события нажатия кнопки «Отсортировать» имеет вид:
Private Sub sort_Click() |
‘объявление типа переменных |
|||
Dim j As Integer |
||||
Dim |
TempG |
As |
String |
|
Dim |
TempN |
As |
Single |
|
Worksheets("Лист3").Select |
|
|||
Cells(1, 1) |
= " Страна " |
|
||
Cells(1, 2) |
= "Численность населения (млн.чел.) " |
|||
For i = |
1 To SizeM |
SizeM + 1 |
‘сортировка массива по возрастанию |
|
For j |
= i + 1 To |
|
||
If |
NazvGos(i) |
> NazvGos(j) Then |
||
|
TempG = NazvGos(i): |
TempN = KolNasel(i) |
||
|
NazvGos(i) |
= NazvGos(j): |
KolNasel(i) = KolNasel(j) |
|
|
NazvGos(j) |
= TempG: |
KolNasel(j) = TempN |
|
End If |
|
|
|
|
Next j |
|
|
|
20 |
|
|
|
|
|
Next i |
|
For i = 1 To SizeM + 1 |
‘вывод массивов на новый лист |
Cells(i + 1, 1) = NazvGos(i) |
|
Cells(i + 1, 2) = KolNasel(i) |
|
Next i |
‘задание формата ячеек таблицы |
For i = 1 To SizeM + 2 |
|
If i = 1 Then |
& i).Font.FontStyle = "полужирный" |
Worksheets("Лист3").Range("A" |
|
Worksheets("Лист3").Range("A" |
& i).HorizontalAlignment = xlCenter |
Worksheets("Лист3").Range("B" |
& i).Font.FontStyle = "полужирный" |
Worksheets("Лист3").Range("B" |
& i).HorizontalAlignment = xlCenter |
End If |
i).Borders.LineStyle = xlContinuous |
Worksheets("Лист3").Range("A" & |
|
Worksheets("Лист3").Range("B" & |
i).Borders.LineStyle = xlContinuous |
If i>1 Then Worksheets("Лист3").Range("B" & i).NumberFormat = "0.000" Next i
End Sub
На первом рабочем листе разместим кнопку «Форма» для вызова формы «Численность населения европейских государств». Запустим данную форму и проверим работу составленной программы (рис. 13 и 14).
Рис. 13. Результат нажатия кнопок «Ввод и вывод данных» и «Рассчитать»
Теперь введем код обработки событий нажатия кнопок «Очистить» и «Выход»:
Private |
Sub |
clean_Click() |
‘удаляем содержимое ячеек |
For i |
= 1 |
To 30 |
Worksheets("Лист1").Range("A" & i + 14). ClearContents Worksheets("Лист1").Range("B" & i + 1). ClearContents Worksheets("Лист2").Range("A" & i). ClearContents Worksheets("Лист2").Range("B" & i). ClearContents
21
