СОДЕРЖАНИЕ
1.Задание
2.Описание переменных
3.Блок-схема
4.Описание алгоритма
5.Листинг программы
6.Описание входных данных и результат вычисления
6.1Проверка программы на произвольных данных
6.2Проверка программы на всех НУЛЯХ
6.3Проверка программы на всех ЕДИНИЦАХ
7.Список литературы
1.Задание
Книжный магазин продал за 3 месяца различное количество книг 12 наименований по цене, устанавливаемым в начале каждого месяца (т.е. каждый месяц цены на книги менялись).
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчёты и выводит на экран:
- исходные данные в виде таблицы, где указаны наименования книг, цена книги в каждом месяце, кол-во проданных книг за каждый месяц;
- доход по каждой книге за 3 месяца
- доход за каждый месяц по всем книгам;
- общий доход по всем книгам за 3 месяца;
- наименование книги, принёсший наибольший доход
2.Описание переменных
В программе переменные описаны следующим образом:
1) cena(12,3) – стоимость одной книги каждого наименования в каждом месяце, представляет двумерный массив целых чисел
Dim cena(12,3) As Double
2) koll(12,3) – количество книг каждого наименования, проданных в каждый из трёх месяцев, представляет двумерный массив целых чисел
Dim koll(12,3) As Integer
3) doh(4) – доход за каждый месяц (от1 до3) и общий доход за весь период, представляет массив дробных чисел
Dim doh (4) As Double
4) koll_n(12) – количество проданных книг каждого наименования за истёкший период, представляет массив целых чисел
Dim kol_n(12) As Integer
5) nam – порядковый номер наименования книги , принёсший наибольший доход, представляет массив дробных чисел
Dim name As Integer
В программе также были использованы вспомогательные переменные, счётчики циклов, i, p и j, являющиеся целыми числами.
Dim i As Integer, j As Integer, p As Integer
Переменные cena(12,3), doh(4), dohod могут быть и не целыми числами, поэтому они объявлены как действительные. Переменные koll(12,3), koll_n(12), nam – целые числа, так как в книжном магазине продаются только целые книги, а не как половинки.
3. Блок-схема.
В данной работе использованы следующие виды блоков:
- квадрат – блок решения;
- эллипс – данный блок используется для обозначения начала и конца алгоритма;
- пятиугольник – данный блок используется для обозначения оператора цикла;
- стрелками обозначен переход от одного действия в другому.
4. Описание алгоритма
Начало программы.
Ввод начальных (нулевых) значений для расчётных величин (доход по каждой книге за 3 месяца, доход за каждый месяц по всем книгам и общий доход за весь период, наименование книги, принёсшей наибольший доход).
Открытие листа с начальными данными («Нач_д») и получение этих данных в рабочие переменные (двумерные массивы cena (12,3) и koll (12,3)).
Открытие листа с результатами, формирование матрицы входных данных. Организуется два вложенных цикла (по каждой книге и месяцу). Во внутреннем цикле (по месяцам, расчёт по каждому наименованию) суммируется
Расчёт количества дохода по каждому наименованию книг за каждый месяц, количество проданных книг и вывод результатов. Организуется два вложенных цикла: внешний по наименованиям книг, внутренний по месяцам. Для оптимизации процесса расчётная часть совмещена с выводом: во внутреннем цикле происходит вычисление дохода по i-му наименованию в j-ый месяц с выводом результата, во внешнем цикле (после получения результатов внутреннего цикла) – вывод дохода по каждому наименованию и общий доход.
Конец программы.
5. Листинг программы
Sub Funct()
'Сначала объявляем переменные, используемые в программе.
Dim cena(12, 3) As Double 'Стоимость книги
Dim koll(12, 3) As Integer 'Количество (по месяцам)
Dim kol_n(12) As Integer 'Количество книг в месяц
Dim doh(4) As Double 'Доход в месяц
Dim nam As Integer 'Книга с наибольшим доходом
Dim i As Byte, j As Integer, p As Integer 'Счётчики циклов
For i = 1 To 12
kol_n(i) = 0
Next
For j = 1 To 3
doh(j) = 0
Next
For p = 1 To 3
Next
doh = 0
nam = 0
Sheets("Нач_д").Select
For i = 1 To 12
For p = 1 To 3
cena(i, p) = Cells(3 + i, 1 + p)
Next p
Next i
For i = 1 To 12
For j = 1 To 3
koll(i, j) = Cells(3 + i, 4 + j)
Next j
Next i
Sheets("Результат").Select
Cells(1, 1) = "Количество проданных книг"
Cells(2, 1) = "Наименование"
Cells(2, 2) = "Стоимость"
Cells(2, 5) = "Количество"
Cells(3, 2) = "1 мес"
Cells(3, 3) = "2 мес"
Cells(3, 4) = "3 мес"
Cells(3, 5) = "1 мес "
Cells(3, 6) = "2 мес"
Cells(3, 7) = "3мес"
Cells(4, 1) = "Биология (пособие)"
Cells(5, 1) = "Вилла Белый конь"
Cells(6, 1) = "Властелин колец ч.1"
Cells(7, 1) = "Властелин колец ч.2"
Cells(8, 1) = "Властелин колец ч.3"
Cells(9, 1) = "Гаргантюа и Пантагрюэль"
Cells(10, 1) = "Деловые люди (сборник)"
Cells(11, 1) = "Основы политологии и социологии"
Cells(12, 1) = "Программирование на языке VBA"
Cells(13, 1) = "Угрюм-река"
Cells(14, 1) = "Учебник английского языка ч.1,2"
Cells(15, 1) = "Хоббит или туда и обратно"
For i = 1 To 12
For p = 1 To 3
Cells(3 + i, 1 + p) = cena(i, p)
Next p
For j = 1 To 3
Cells(3 + i, 4 + j) = kol_n(i)
kol_n(i) = kol_n + koll(i, j)
Next j
Next i
'Ниже происходит ввод названий соответствующих
'столбцов и строк
Cells(17, 1) = "Результат в денежном эквиваленте"
Cells(18, 1) = "Наименование"
Cells(18, 2) = "Стоимость"
Cells(18, 5) = "Доход"
Cells(18, 8) = "Всего" 'Общий доход за 3 месяца
Cells(18, 9) = "Книга"
Cells(19, 2) = "1 мес"
Cells(19, 3) = "2 мес"
Cells(19, 4) = "3 мес"
Cells(19, 5) = "1 мес"
Cells(19, 6) = "2 мес"
Cells(19, 7) = "3 мес"
Cells(20, 1) = "Биология (сборник)"
Cells(21, 1) = "Вилла Белый конь"
Cells(22, 1) = "Властелин колец ч.1"
Cells(23, 1) = "Властелин колец ч.2"
Cells(24, 1) = "Властелин колец ч.3"
Cells(25, 1) = "Гаргантюа и Пантагрюэль"
Cells(26, 1) = "Деловые люди (сборник)"
Cells(27, 1) = "Основы политологии и социологии"
Cells(28, 1) = "Программирование на языке VBA"
Cells(29, 1) = "Угрюм-река"
Cells(30, 1) = "Учебник английского языка ч.1,2"
Cells(31, 1) = "Хоббит или туда и обратно"
Cells(32, 1) = "Итого"
For i = 1 To 12
For p = 1 To 3
Cells(19 + i, 1 + p) = cena(i, p)
Next p
For j = 1 To 3
Cells(19 + i, 4 + j) = koll(i, j) * cena(i, p)
doh(j) = doh(j) + koll(i, j) * cena(i, p)
doh(4) = doh(4) + koll(i, j) * cena(i, p)
Next j
Cells(19 + i, 8) = cena(i, p) * kol_n(i)
Next i
Cells(18, 8) = "Всего"
Cells(18, 9) = "Книга"
Cells(32,8)=doh(4)
Cells(33,1)=”Общий доход”
Cells(33,5)=doh(4)
Cells(22,9)=nam
End Sub
6.Описание входных данных и результат вычисления.
Для начала создаём документ Microsoft Excel и записываем на рабочий лист начальные данные. Затем запускаем редактор Visual Basic, чтобы в нём написать код программы. Далее сохраняем изменения в созданном модуле и запускаем программу. Исправляем допущенные ошибки. После чего результат работы программы будет помещён на лист «Результат».
6.1Проверка программы на произвольных данных
Начальные данные
Наименование
Стоимость
Количество
1 мес
2 мес
3 мес
1 мес
2 мес
в 3 мес
Биология (пособие)
145
150
140
7
10
3
Вилла Белый конь
58
60
55
11
9
7
Властелин колец ч.1
130
135
140
25
30
35
Властелин колец ч.2
130
135
140
25
30
30
Властелин колец ч.3
115
120
125
25
30
30
Гаргантюа и Пантагрюэль
90
87
84
11
9
10
Деловые люди (сборник)
125
130
110
15
15
20
Основы политологии и социологии
70
68
65
6
8
6
Программирование на языке VBA
125
130
145
7
8
5
Угрюм-река
80
85
90
10
15
10
Учебник английского языка ч.1,2
120
110
115
10
20
15
Хоббит или туда и обратно
90
95
100
20
30
35
Количество проданных книг
Наименование
Стоимость
Доход
1 мес
2 мес
3 мес
1 мес
2 мес
в 3 мес
Биология (пособие)
145
150
140
1015
1500
420
Вилла Белый конь
58
60
55
638
540
385
Властелин колец ч.1
130
135
140
3250
4050
4900
Властелин колец ч.2
130
135
140
3250
4050
4200
Властелин колец ч.3
115
120
125
2875
3600
3750
Гаргантюа и Пантагрюэль
90
87
84
990
783
840
Деловые люди (сборник)
125
130
110
1875
1950
2200
Основы политологии и социологии
70
68
65
420
544
390
Программирование на языке VBA
125
130
145
875
1040
725
Угрюм-река
80
85
90
800
1275
900
Учебник английского языка ч.1,2
120
110
115
1200
2200
1725
Хоббит или туда и обратно
90
95
100
1800
2850
3500
Результат в денежном эквиваленте
Наименование
Стоимость
Доход
Всего
Книга
1 м
2 м
3 м
1 м
2 м
3 м
Биология (пособие)
145
150
140
1015
1500
420
2935
Вилла Белый конь
58
60
55
638
540
385
1563
Властелин колец ч.1
130
135
140
3250
4050
4900
12200
12200
Властелин колец ч.2
130
135
140
3250
4050
4200
11500
Властелин колец ч.3
115
120
125
2875
3600
3750
10225
Гаргантюа и Пантагрюэль
90
87
84
990
783
840
2613
Деловые люди (сборник)
125
130
110
1875
1950
2200
6025
Основы политологии и социологии
70
68
65
420
544
390
1354
Программирование на языке VBA
125
130
145
875
1040
725
2640
Угрюм-река
80
85
90
800
1275
900
2975
Учебник английского языка ч.1,2
120
110
115
1200
2200
1725
5125
Хоббит или туда и обратно
90
95
100
1800
2850
3500
8150
ИТОГО
67305
Общий доход за 3 месяца
Книга с наибольшим доходом 3
6.2Проверка программы на всех НУЛЯХ
6.3Проверка программы на всех ЕДИНИЦАХ
7.Список литературы
1. Иванов М.Н., Суворов С.В. Информатика Часть 2. Программирование. Учебно-методическое пособие – М.; МГИУ, 2004
2. Слепцова Л.Д. Программирование на языке VBA. Самоучитель,: -М.: Издательский дом «Вильямс», 2004
3. Браун С. Visual Basic 5 c самого начала – СПб : Питер, 1998