Программирование на Visual BasicРефераты >> Программирование и компьютеры >> Программирование на Visual Basic
СОДЕРЖАНИЕ
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"