Написание программы для обнаружения изменений состояния (тип «0-1», с подтверждением), страница 2

Если условие выполняется, то начинается обработка заявок из БПЗ.

28. v:=0; Переменная v будет использоваться для обращения к записям в БПЗ.

29. v:= v+1; увеличиваем значение переменной v на 1 для обращения к v-той ячейке БПЗ.

30. i:=kv; Читаем из БПЗ номер линейки в которой произошли изменения состояний КТ.

31. Randomize. Инициализация датчика случайных чисел. Осуществляется для того, чтобы датчик случайных чисел не генерировал постоянно одни и те же последовательности случайных чисел.

32. Формируем СОС2, используя СОС1 и датчик случайных чисел. sos2j=sosij*random(2); j=1-m;

33. Формируем СПС аналогично пунктам 9, 10, 11, 12.

34. si2j=sos2j*spsinj; j=1-m; Формируем СИ2.

35. ssij=bpzvj*si2j; j=1-m; Формируем ССИ.

36. Записываем в файл СОС2, СИ2, ССИ.

37. s:=0; С помощью переменной s мы будем определять равно ли ССИ нулю. Первоначально обнуляем эту переменную,  чтобы накапливать в ней сумму элементов ССИ.

38. Задаем цикл for j:=1 to m do для накопления суммы элементов ССИ. Накопление суммы элементов ССИ необходимо для того, чтобы определить равно ли ССИ нулю.

39. s:=s+ ssij; Накопление суммы элементов СCИ.

40. Проверяем условие if s¹0 then< > else< >; Определяем равно ли значение переменной s нулю, то есть равно ли СCИ нулю.

Если это условие не выполняется, то есть s=0 (СCИ=0), то тогда переходим к шагу 49, где будем проверять есть ли еще заявки в БПЗ. 

Если это условие выполняется, то есть s¹0 (ССИ¹0), то тогда переходим к следующему шагу алгоритма:

41. Задаем цикл for j:=1 to m do для того, чтобы проверить все  элементы ССИ.

42. Проверяем условие if  ssij = 1 then< > else< >; Проверяем по очереди все элементы ССИ равны ли они 1.

Если это условие не выполняется, то есть ssij =0, то тогда переходим к проверке следующего элемента ССИ. 

Если это условие выполняется, то есть ssij =1, то тогда начинаем записывать заявки в БЗО:

43. u:=u+1; увеличиваем значение переменной u на 1 для того, чтобы осуществить запись в u-ую ячейку БЗО.

44. nak= (i-1)*m + j –1; По этой формуле определяем номер комплекта, который сгенерировал заявку.

bzou  = naku;  Записываем  в u-ю ячейку БЗО номер u-го комплекта, который требует обслуживания.

Цикл, заданный на 41-м шаге включает в себя шаги 42, 43, 44.

После завершения цикла переходим к шагу 45:

Шаги 45, 46, 47 и 48 обеспечивают формирование измененного с учетом посткпивших заявок массива МСКТ.

45. Задаем цикл for j:=1 to m do для того, чтобы сформировать все элементы измененного МСКТ.

46. msktij  = msktij + ssij; Изменяем значение элемента msktij с учетом ССИ.

47. Так как для изменения значений элементов МСКТ применяем операцию сложения вместо операции «сложение по модулю 2», то чтобы учесть вариант 1Å1=0 (в нашем случае будет 1+1=2) ставим условие if msktij =2 then< > else< >;

Если это условие не выполняется, то есть msktij =0 или 1, то тогда возвращаемся в цикл (на шаг 45) и формируем следующий элемент МСКТ. 

Если это условие выполняется, то тогда чтобы учесть вариант 1Å1=0 (в нашем случае будет 1+1=2) обнуляем значение этого элемента МСКТ:

48. msktij:=0;

После завершения цикла, а также в случае невыполнения условия на шаге 40 переходим к шагу 49:

49. Проверяем условие repeat … until v=t; На этом шаге проверяем есть ли еще заявки в БПЗ.

Если есть (значение FALSE), то переходим на шаг 29 и начиная с 29-го шага повторяем все выше описанные действия.

Если заявок в БПЗ больше нет (значение TRUE), то переходим к пункту 50.

50. Записываем в файл содержимое БЗО и измененный МСКТ.

На этом работа программы ПСК2 заканчивается.

В случае невыполнения условия на шаге 27 также переходим к шагу 51:

51. Производим запрос: следует ли продолжить сканирование? При этом предлагается ввести с клавиатуры y или n (то есть да или нет).

52. Требуется ввести с клавиатуры y или n (да или нет). Это осуществляется путем назначения переменной g значения y или n.

53. Проверяем условие repeat … until g¹’y’; На этом шаге проверяем равно ли значение переменной g символу y.

Если условие не выполняется (значение FALSE), то есть g=’y’ то переходим на шаг 5 и начиная с 5-го шага повторяем все выше описанные действия, но уже имея измененный МСКТ.

Если условие выполняется (значение TRUE), то завершаем сканирование и:

54. Закрываем файл.