В коллективном хозяйстве имеются цветочные оранжереи (розы, гвоздики, лилии — всего 6 видов цветов). Каждый год в течение 3 лет колхоз собирал букеты с каждой оранжереи и продавал их по закупочным ценам, которые были различны в разные годы.
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:
— исходные данные в виде таблицы, где указаны наименования цветов, закупочные цены букетов каждого вида и количество букетов в каждом году;
— общее количество букетов за 3 года;
— доход по всем цветам за каждый год;
— общий доход колхоза за 3 года;
— вид цветов, принесший максимальный доход за 2 года.
2. Описание переменных
Исходные данные находятся на листе «Начальные данные» («Нач_д» (рис. 1) и содержат следующую информацию:
1) количество букетов из 6 видов, выращенных за год.
2) закупочные цены букетов каждого вида.
Результаты работы программы оформляются на листе «Результат» (рис. 2).
Как в Python писать программы с интерфейсом?

Рис.1. Лист с начальными данными

Рис.2. Полученные результаты
В программе переменные описаны следующим образом:
1) koll(7,5) — количество букетов за каждый год
Dim koll(7,5) As Integer
3) zar(6) — доход по всем цветам за каждый год
Dim zar(6) As Double
4) koll_n(7) — общее количество букетов за3 года
Dim kol_n(7) As Integer
5) vid — вид цветов принесший максимальный доход
Dim vid As Integer
6) zarpl — сумма максимального дохода
Dim zarpl As Double
7) cena(7) — общий доход колхоза за 3 года
Dim cena(7) As Double
В программе также были использованы вспомогательные переменные, счетчики циклов, i и j, являющиеся целыми числами.
Dim i As Integer, j As Integer
Переменные cena(7), zar(6), zarpl могут быть и не целыми числами, поэтому они объявлены как действительные. Переменные koll(7,5) koll_n(7) целые числа, так как мы считаем, что смена рабочего составляет полный день, и он не может изготовить за смену половину детали.


4. Описание алгоритма
Ввод начальных (нулевых) значений для расчетных величин (общее количество букетов за 3 года, доход по всем цветам за каждый год и доход по всем цветам за каждый год и общее количество букетов за 3 года, вид цветов, принесший максимальный доход за 2 года).
Открытие листа с начальными данными («Нач_д») и получение этих данных в рабочие переменные (массивы сеnа(7) и kоll(7, 5)).
Открытие листа с результатами, формирование матрицы входных данных. Организуется два вложенных цикла (доход по всем цветам за каждый год и общее количество букетов за 3 года). Во внутреннем цикле (по годам, расчет по одному виду цветов) суммируется количество собранных букетов, после выхода из внутреннего цикла выводится результат собранных букетов.
Как написать свою программу на python? #python #программирование
Расчет сумм дохода по каждому виду цветов за каждый год, количество собранных букетов и вывод результатов. Организуется два вложенных цикла: внешний по цветам, внутренний по годам. Для оптимизации процесса расчетная часть совмещена с выводом: во внутреннем цикле происходит вычисление суммы дохода по i-му виду букетов в j-й год с выводом результата, во внешнем цикле (после получения результатов внутреннего цикла) — вывод стоимости одного букета и по всем видам цветов. Доход за каждый год организован в этом же внутреннем цикле.
Определение вида цветов, принесший максимальный доход за 2 года. Используется алгоритм сравнения, после выводиться результат вида цветов, принесший максимальный доход за 2 года
5. Листинг программы
Сначала объявляем переменные, используемые в программе.
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer ‘счетчики циклов
Dim koll(7, 5) As Integer ‘количество букетов за каждый год
Dim zar(6) As Double ‘доход по всем цветам за каждый год
Dim koll_n(7) As Integer ‘общее количество букетов за 3 года
Dim vid As Integer ‘вид цветов принесший максимальный доход
Dim zarpl As Double ‘сумма макимального дохода
Dim cena(7) As Double ‘общий доход колхоза за 3 года
‘в начале программы все переменные равны нулям
‘создаем цикл, который считает количество букетов за 3 года
For i = 1 To 5
‘создаем цикл, который считает доход по всем цветам за период
For j = 1 To 6
‘считываем начальные данные
Sheets(«Нач_д»).Select
‘в каждую ячейку массива cena(i) записывается цена каждого букета
‘для этого используем цикл
For i = 1 To 6
cena(i) = Cells(3 + i, 2)
‘в каждую ячейку массива koll(i, j) записывается количество букетов за период
‘так как массив двумерный цикл проходит по двум счетчикам
For i = 1 To 6
For j = 1 To 5
koll(i, j) = Cells(3 + i, 2 + j)
‘на листе «Результат» создаются ячейки с определенными названиями
Sheets(«Результат»).Cells(1, 1) = «Количество букетов»
Sheets(«Результат»).Cells(2, 1) = «Наименование цветов»
Sheets(«Результат»).Cells(2, 2) = «Цена 1-го букета»
Sheets(«Результат»).Cells(2, 3) = «Собрано»
Sheets(«Результат»).Cells(3, 3) = «1-й год»
Sheets(«Результат»).Cells(3, 4) = «2-й год»
Sheets(«Результат»).Cells(3, 5) = «3-й год»
Sheets(«Результат»).Cells(3, 6) = «Всего»
Sheets(«Результат»).Cells(4, 1) = «Розы»
Sheets(«Результат»).Cells(5, 1) = «Гвоздики»
Sheets(«Результат»).Cells(6, 1) = «Лилии»
Sheets(«Результат»).Cells(7, 1) = «Тюльпаны»
Sheets(«Результат»).Cells(8, 1) = «Орхидеи»
Sheets(«Результат»).Cells(9, 1) = «Хризантемы»
‘в соответсвующие ячейки записываются цены собранных букетов
For i = 1 To 6
Sheets(«Результат»).Cells(3 + i, 2) = cena(i)
For j = 1 To 4
‘в соответсвующие ячейки записываются количество собранных букетов за каждый год
Sheets(«Результат»).Cells(3 + i, 2 + j) = koll(i, j)
‘рассчитывается количество собранных букетов каждого вида за 3 года
koll_n(i) = koll_n(i) + koll(i, j)
‘результат записывается в соответствующие ячейки
Sheets(«Результат»).Cells(3 + i, 6) = koll_n(i)
‘на листе «Результат» создаются ячейки с определенными названиями
Sheets(«Результат»).Select
Sheets(«Результат»).Cells(12, 1) = «Доход в денежном эквиваленте»
Sheets(«Результат»).Cells(13, 1) = «Наименования цветов»
Sheets(«Результат»).Cells(13, 2) = «Цена 1-го букета»
Sheets(«Результат»).Cells(13, 3) = «Доход»
Sheets(«Результат»).Cells(14, 3) = «1-й год»
Sheets(«Результат»).Cells(14, 4) = «2-й год»
Sheets(«Результат»).Cells(14, 5) = «3-й год»
Sheets(«Результат»).Cells(14, 6) = «Всего»
Sheets(«Результат»).Cells(15, 1) = «Розы»
Sheets(«Результат»).Cells(16, 1) = «Гвоздики»
Sheets(«Результат»).Cells(17, 1) = «Лилии»
Sheets(«Результат»).Cells(18, 1) = «Тюльпаны»
Sheets(«Результат»).Cells(19, 1) = «Орхидие»
Sheets(«Результат»).Cells(20, 1) = «Хризантемы»
Sheets(«Результат»).Cells(21, 1) = «Доход по всем цветам за каждый год»
‘во внешнем цикле происходит вывод дохода по всем цветам за каждый год и общий доход колхоза, собранных в данный период
For i = 1 To 7
‘в этом цикле вычисляется общее количество букетов за 3 года
‘доход по всем цветам за каждый год и общий доход колхоза за 3 года
For j = 1 To 4
Sheets(«Результат»).Cells(14 + i, 2 + j) = koll(i, j) * cena(i)
zar(j) = zar(j) + koll(i, j) * cena(i)
zar(6) = zar(6) + koll(i, j) * cena(i)
Sheets(«Результат»).Cells(14 + i, 2) = cena(i)
Sheets(«Результат»).Cells(14 + i, 6) = cena(i) * koll_n(i)
‘в данном цикле происходит выбор суммы наибольшего заработка и соответственно
‘день с максимальным заработком становится день j (день, в который был получен максимальный доход)
For j = 1 To 4
Sheets(«Результат»).Cells(21, 2 + j) = zar(j)
If zar(j) > zarpl Then
zarpl = zar(j)
Sheets(«Результат»).Cells(23, 6) = vid
vid = розы
End If
‘в соответствующие ячейки выводятся заработок рабочего за неделю, день с максимальным доходом и размер дохода в этот день
Sheets(«Результат»).Select
Sheets(«Результат»).Cells(22, 1) = «Общий доход колхоза за 3 года»
Sheets(«Результат»).Cells(22, 6) = zar(6)
Sheets(«Результат»).Cells(23, 1) = «Вид цветов, принесший максимальный доход за 2 года»
Sheets(«Результат»).Cells(23, 6)
6. Описание входных данных и результат вычислений
Проверка программы на всех единицах:


Проверка на всех нулях:


Проверка на произвольных данных:


Исходные данные для задания представлены на Рис.№1., решение – на Рис.2.
1. Информатика. Часть 2. Программирование: Учебно-методическое пособие / Иванов М.Н., Суворов С.В. М.: МГИУ. 2006.
2. Информатика. Методические указания по выполнению практических работ в компьютерном классе (Access, Internet) / Гришин М.П., Юрасов А.Б. М.: МГИУ, 2003.
3. Информатика. Методическое пособие по выполнению практических работ в компьютерном классе (Word, Excel) / Гришин М.П. М.: МГИУ, 2005.
4. Информатика. Часть 1. Введение в информатику: учебное пособие / Гришин М.П., Иванов М.Н., Носова Т.К., Суворов С.В. М.: МГИУ, 2008.
5. Практическая информатика, Часть 1 Н.А. Роганова, С.В. Андреев
6. Практическая информатика, Часть 1 Н.А. Роганова, С.В. Андреев
Источник: www.e-ng.ru
Описание разработанной программы
Наименование разработанной программы — «Калькулятор».
Для выполнения программы необходима ОS Windows XP/Vista/Seven.
Программа написана на языке программирования Delphi в среде разработки Embarcadero RAD Studio 2010.
Функциональное назначение
Программа предназначена для вычисления выражений, содержащих операции «+», «-», «*», «/» и записанных в постфиксной форме.
Иерархия взаимосвязи классов и объектов представлена на рисунке 8.

Рисунок 8. — Иерархия классов
Описание физической структуры
Физическая структура программы «обработчик текста» представлена на рисунке 9. Здесь указано из каких подпрограмм и структур данных состоит данная программа, а также указаны связи по данным и управлению между ними.

Рисунок 9. — Физическая структура программы
Описание логической структуры
Окно формы в начале выполнения программы (рисунок 1):TMemo

Рисунок 1. — Окно формы в начале выполнения программы
Следующие события происходят при разнообразных действиях с главным окном приложения:
· Событие 0: Щелчок по кнопке «Загрузить текст из файла». Обработчик этого события — процедура TForm1. Button4Click должна вывести окно открытия файла и предложить пользователю выбрать нужный текстовый файл для последующей его обработки в программе. Если текстовый файл пуст, то будет выведено сообщение об ошибке.
· Событие 1: Щелчок по кнопке «вычислить». Обработчик этого события — процедура TForm1.btnOperationClick, которая в свою очередь вызывает еще две основных процедуры test и calc. В них выполняется проверка на правильность выражений и само вычисление выражений, в результате чего результаты и ошибки выводятся в окне Memo2.
· Событие 2: Щелчок по кнопке «Сохранить». Обработчик этого события — процедура TForm1.btnSaveClick. Должна вывести окно сохранения файла и предложить пользователю выбрать нужный текстовый файл и сохранить в него полученные результаты и ошибки в текстовый файл.
Алгоритмы обработчиков событий для программы «Обработчик текста»
При успешном выполнении события загружается диалог открытия текстового файла. Выполнение обработчика события начинается с нажатия кнопки «Загрузить текст из файла».

Рис. 2
После нажатия на кнопку «Загрузить текст из файла» открывается диалог выбора текстового файла для последующей работы с ним. Возможны 3 случая выполнения этого алгоритма: если текстовый файл не выбран, процедура заканчивается, а если выбран необходимый текстовый файл, то происходит проверка файла на наличие текста. Если файл не пуст, то происходит загрузка текста из этого файла в программу для последующей работы, иначе всплывает ошибка и процедура заканчивается.

Рисунок 2. — схема алгоритма обработчика события TForm1.btnOpenClick
При успешном выполнении события происходит обработка возможных ошибок в выражениях и вычисление самих выражений. Это событие происходит при нажатии кнопки вычислить.

Рис. 3
Сначала идёт проверка на непустой файл. Если текст непустой, то происходит обращение к функции «calc», если же текст пуст, то выдаётся сообщение об ошибке. Далее уже в функции «calc» вызывается функция «test», в которой происходит поиск и обработка ошибок. Затем выполняется само вычисление выражений (тех, которые записаны без ошибок) т. е. функция «calc» и вывод результатов в поле Memo2.

Рисунок 3. — схема алгоритма TForm1.btnOperationClick
Выполняет вычисление выражения с использованием стека. Выражение разбирается слева направо. Каждый символ анализируется и в зависимости от того, является ли он цифрой, пробелом или знаком операции, выполняются соответствующие действия: занесение в стек, выполнение операций над операндами или переход к следующему символу.


Рисунок 4. — схема алгоритма «calc»
Функция test
Осуществляет проверку выражения на корректность. Выполняет проверку наличия недопустимых символов, и соответствие количества операндов количеству знаков операций и наличие и позицию символа «=».


Рисунок 5. — функция «test»
При успешном выполнении события происходит сохранение всех результатов текстовый файл. Выполнение обработчика события начинается с нажатия кнопки «Сохранить».

Рис. 4
Сначала идёт проверка на наличие результата. Если текст пустой, то вывод сообщения об ошибке, если нет — в выбранный файл записывается результат.

Рисунок 8. — Блок-схема алгоритма TForm1.btnSaveClick
Используемые технические средства
При выполнении данной курсовой работы используется персональный компьютер с процессором AMD turion X2. Данный компьютер оснащен всеми устройствами необходимыми для работы в среде разработки Embarcadero RAD Studio 2010 и последующем запуске полученной программы.
Вызов и загрузка
Программа «Калькулятор» начинает свою работу при запуске приложения с именем «Project1.exe».
Входные данные
Для программы «Калькулятор» входными данными являются арифметические выражения введенные из текстового документа.
Выходные данные
В программе «Калькулятор» выходными данными будет являться те — же арифметические выражения, только с ответом после знака «=».
Источник: studbooks.net