Главная / Разработка алгоритмов / Циклический алгоритм с вложенным циклом

Пример циклического алгоритма с вложенным (внутренним) циклом

Рассмотрим пример циклического алгоритма с вложенным (внутренним) циклом. Для этого решим следующую задачу.

Задание. Имеется массив значений, состоящий из 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).