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

Страницы работы

Содержание работы

Описание разработанной программы.

1.  Задаем с помощью констант число линеек в определителе – n и число КТ в линейке – m. Это делаем с помощью констант для того, чтобы в случае изменения числа линеек определителя или числа КТ в линейке не нужно было исправлять всю программу, а стоило бы только изменить значения констант. Const    n=5;   m=8;

2.  Открываем файл “res.txt” для записи в него результатов выполнения программы.

3.  Формируем МСКТ с помощью датчика случайных чисел – random: msktij:=random(2); i=1-n; j=1-m; Random(2) – двойка в скобках означает, что будут формироваться случайные числа в интервале 0£сл.число<2, то есть 0 или 1.

4.  Выводим в файл содержимое МСКТ.

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

6.  Формируем СОС1 с помощью датчика случайных чисел – random: sosij:=random(2); i=1-n; j=1-m; Random(2) – двойка в скобках означает, что будут формироваться случайные числа в интервале 0£сл.число<2, то есть 0 или 1.

7.  Выводим в файл содержимое массива СОС1.

Начинается работа программы ПСК1.

8.  t:=0; Переменная t определяет количество записей в БПЗ. Для того, чтобы указать, что записей пока в БПЗ нет обнулим эту переменную.

i:=1; Переменная i в данном случае указывает номер линейки с которой начнется сканирование.

9,10,11,12 – Формирование СПС.

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

10. С помощью условия msktij=0 осуществляем инвертирование:

11. Если элемент МСКТ=0 то элемент СПС=1.

12. Если элемент МСКТ=1 то элемент СПС=0.

13. Задаем цикл for j:=1 to m do для формирования СИ1.

14. В заданном цикле формируем элементы СИ1: si1j  = sosij * spsinj

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

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

17. p:=р+ si1j; Накопление суммы элементов СИ1.

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

Если это условие не выполняется, то есть р=0 (СИ1=0), то тогда переходим к шагу 24, где будем значение переменной i увеличивать на 1 для перехода к опросу следующей линейки. 

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

19. t:=t+1; Так как СИ1¹0, то это значит, что в БПЗ будут сформированы заявки. Поэтому значение переменной t увеличиваем на 1, чтобы указать с помощью этой переменной номер ячейки БПЗ в которую будет происходить запись.

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

21. bpztj  = si1j; Записываем поэлементно в t-ю ячейку БПЗ элементы СИ1.

22. kt = i; Используем массив k для записи в БПЗ номера линейки в которой обнаружены изменения. Записываем в t-ю ячейку БПЗ i – номер линейки.

23. Записываем в файл содержимое БПЗ.

Цикл, заданный на 20-м шаге включает в себя шаги 21, 22, 23.

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

24. i:=i+1; Увеличиваем значение переменной i на 1, то есть увеличиваем значение номера линейки на 1 для того, чтобы перейти к опросу следующей линейки.

25. Проверяем условие repeat … until i>n; На этом шаге проверяем есть ли еще в определителе комплектов не опрошенные линейки.

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

Если не опрошенных линеек больше нет (значение TRUE), то на этом работа программы ПСК1 завершается и начинается работа программы ПСК2.

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

26. u:=0;  Переменная u будет определять количество записей в БЗО. Обнулим эту переменную, так как пока записей в БЗО нет.

27. Проверяем условие if  t¹0 then< > else< >; Определяем есть ли заявки в БПЗ

Если условие не выполняется (FALSE), то есть t=0, это значит, что заявок в БПЗ нет и в этом случае работа программы ПСК2 заканчивается (переход к шагу 51)

Похожие материалы

Информация о работе