Описание разработанной программы.
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)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.