Главная / Разработка алгоритмов / Циклический алгоритм с вложенным циклом
Пример циклического алгоритма с вложенным (внутренним) циклом
Рассмотрим пример циклического алгоритма с вложенным (внутренним) циклом. Для этого решим следующую задачу.
Задание. Имеется массив значений, состоящий из n столбцов m строк. В этом массиве представлены расходы сырья для производства готовой продукции на предприятии за отчётный период. В каждом столбце указаны значения расходов сырья за час в течение суток. Необходимо определить расход сырья нарастающим итогом за весь период. Решение. Разработаем пользовательский интерфейс для ввода и вывода данных (рис. 1).
Рисунок 1
На рисунке 1 приняты следующие обозначения: Gсут – расход сырья для производства продукции на предприятии за сутки, т/ч; Gсум – общее количество сырья, израсходованного на предприятии с начала отчётного периода, т/ч. Ввод остальных исходных данных будет осуществляться с помощью пользовательской формы UserForm1 (рис. 2).
Рисунок 2
Напишем процедуру, которая и будет вызывать пользовательскую форму при нажатии на кнопку CommandButton1:
- Private Sub CommandButton1_Click()
- Range("A:B").Clear
- Range("A1") = "Gсут"
- Range("B1") = "Gсум"
- UserForm1.Show
- End Sub
Блок-схема алгоритма решения данной задачи представлена на рис.3.
Рисунок 3 - Блок-схема алгоритма
При нажатии кнопки «Ввод» на пользовательской форме UserForm1 выполняется основная процедура:
- Private Sub CommandButton1_Click()
- UserForm1.Hide
- m1 = Val(TextBox1)
- mk = Val(TextBox2)
- n1 = Val(TextBox3)
- nk = Val(TextBox4)
- Gсум = 0
- k = 1
- Cells(m1, n1).Select
- For j = n1 To nk
- For i = m1 To mk
- Gсут = Cells(i, j)
- Gсум = Gсум + Gсут
- Cells(k + 1, 1) = k
- Cells(k + 1, 2) = Gсум
- k = k + 1
- Next i
- ActiveCell.Offset(0, 1).Select
- Next j
- End Sub
При выполнении данной процедуры происходит обработка информации, хранящейся в исходном массиве, и отображаются результаты обработки этой информации (рис. 4).