Метод синтеза генераторов детерминированных тестов на сетях клеточных автоматов (СКА)

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

Label;: TLabel;: TComboBox;: TComboBox;: TComboBox;: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TComboBox;: TComboBox;: TComboBox;: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TComboBox;: TComboBox;: TComboBox;: TPanel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TComboBox;: TComboBox;: TComboBox;: TLabel;: TLabel;: TLabel;: TComboBox;: TLabel;: TLabel;: TLabel;BUTEWEClick (Sender: TObject);FormShow (Sender: TObject);GOTOVOClick (Sender: TObject);

{ Private declarations }OPREDZNACHNOTN; // объявляем функциии в пределах этой формы

{ Public declarations };: TPravilokl;

f: array [1.20] of boolean;

// массив, содержащий значения клетки: array [1.20] of boolean;

// массив, содержащий предыдущие значения клетки: array [1.20,1.8,1.3,1.2] of integer;

// массив для хранения выбранных пользователем значений отрицаний: integer;

// переменная для хранения количества триад в функции возбуждения клетки: boolean;

// переменная для временного хранеия значения функции возбуждения

x: array [1.3] of boolean;

// массив для значений Xi-1, Xi, Xi+1

implementationVvodkolvokletok, Podshet, zastavka;

{$R *. dfm}

PROCEDURE Tpravilokl. OPREDZNACHNOTN;

// процедура для определения значений отрицаний, выбранных пользователемi,j: integer;

// вспомогательные переменные для организации цикла

begin[N_kl,1,1,1]: =Not11. Itemindex;[N_kl,1,2,1]: =Not12. Itemindex;[N_kl,1,3,1]: =Not13. Itemindex;[N_kl,2,1,1]: =Not21. Itemindex;[N_kl,2,2,1]: =Not22. Itemindex;[N_kl,2,3,1]: =Not23. Itemindex;[N_kl,3,1,1]: =Not31. Itemindex;[N_kl,3,2,1]: =Not32. Itemindex;[N_kl,3,3,1]: =Not33. Itemindex;[N_kl,4,1,1]: =Not41. Itemindex;[N_kl,4,2,1]: =Not42. Itemindex;[N_kl,4,3,1]: =Not43. Itemindex;[N_kl,5,1,1]: =Not51. Itemindex;[N_kl,5,2,1]: =Not52. Itemindex;[N_kl,5,3,1]: =Not53. Itemindex;[N_kl,6,1,1]: =Not61. Itemindex;[N_kl,6,2,1]: =Not62. Itemindex;[N_kl,6,3,1]: =Not63. Itemindex;[N_kl,7,1,1]: =Not71. Itemindex;[N_kl,7,2,1]: =Not72. Itemindex;[N_kl,7,3,1]: =Not73. Itemindex;[N_kl,8,1,1]: =Not81. Itemindex;[N_kl,8,2,1]: =Not82. Itemindex;[N_kl,8,3,1]: =Not83. Itemindex;

For i: =1 to kolvotriad do

// блок, предназначенный для того, чтобы если не выбрано отрицание, атоматически для переменной устанавливался "режим" без отрицания

beginj: =1 to 3 doNOTN [N_kl, i,j,1] =-1 then[N_kl, i,j,1]: =0;

// конец блока[N_kl,8,3,2]: =kolvotriad;;TPravilokl. BUTEWEClick (Sender: TObject);

begin: =kolvotriad+1;

// запоминаем, что пользователь отображает на экран ещё одну триадуkolvotriad of

// оператор выбора значения переменной, затем происходит отображение соответствующей панели с триадой

2: Triada2. Visible: =true;

: Triada3. Visible: =true;

: Triada4. Visible: =true;

: Triada5. Visible: =true;

: Triada6. Visible: =true;

: Triada7. Visible: =true;

8: Triada8. Visible: =true;;kolvotriad=8 then

// если отображается последняя 8-я триада, то сделать недоступной кнопку ещё

BUTEWE. Enabled: =false;TPravilokl. FormShow (Sender: TObject);

var: string;

// вспомогательная переменная для тображения на экране номера клетки, для которой вводится возбуждающая функция: =1;

// присваиваем начальное значение переменной, хранящей начальное количество триад. Visible: =false;

// скрываем от пользователя триады

triada3. Visible: =false;. Visible: =false;. Visible: =false;. Visible: =false;. Visible: =false;. Visible: =false;: =IntToStr (N_kl);. Caption: ='для '+s+'-й клетки';;TPravilokl. GOTOVOClick (Sender: TObject);Nachsostoyaniekl. ItemIndex of

// выбираем начальное значение

1: f [N_kl]: =false;

// заносим в массив для хранения значений функций, в данный момент тут будут содержатся начальные значения клеток

0: f [N_kl]: =false;

: f [N_kl]: =true;

end;;

// определяются значения отрицаний при переменных

if N_kl=kolvokl then. show;. close;;. close;;.PODSCHET;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class (TForm): TListBox;FormShow (Sender: TObject);FormClose (Sender: TObject; var Action: TCloseAction);

{ Private declarations }VICHISLENIEFKLETKI;

{ Public declarations };: TPodschet;Vvodpravila, Vvodkolvokletok, zastavka;

{$R *. dfm}TPodschet. VICHISLENIEFKLETKI;

// процедура для вычисления функции возбуждения клетки: boolean;

// переменная для хранения промежуточных данных функции одной триады,j,k: integer;

// вспомогательне переменные для счётчиков цикла: =false;

// присвоение для правильной работы программы

kolvotriad: =NOTN [N_kl,8,3,2];i: =1 to kolvotriad do

// цикл для каждой триады

beginj: =1 to 3 do

// цикл для каждого элемента триадыj=1 then

// если это первый элемент в триадеNOTN [N_kl, i,j,1] of

// выбираем значение из массива, 0 соответствует отсутствию отрицания, 1 - отрицанию

: triada: =x [j];

// т.к. первый элемент, то присваиваем

: triada: =not (x [j]);

// конец блока оператора выбора;

// конец блока оператора условия отбора первого элемента триады(j<>1) then // если это не первый элемент в триадеNOTN [N_kl, i,j,1] of

// выбираем значение из массива, 0 соответствует отсутствию отрицания, 1 - отрицанию

: triada: = (triada) and (x [j]);

// т.к. не первый элемент, то используем операцию логического умножения

1: triada: = (triada) and (not (x [j]));

end

// конец оператора выбора

// конец блока оператора условия отбора не первого элемента триады;

// конец цикла для каждого элемента триады: = (znachf) or (triada);

// конец цикла для каждой триады;TPodschet. FormShow (Sender: TObject);

// процедура выполняется тогда, когда на экране появляется форма: string;

// переменная для вывода результатов: integer;

// вспомогательные переменные_kl: integer;

// переменная для вычисления числа клеток, как глобальная "не прокатила"jj: =1 to kolvwagov do

// цикл по количеству шагов КА: ='';

// обнуление для правильного вывода

for N_kl: =1 to kolvokl do

// для всех клеток

begin(N_kl=1) then

// если первая клетка с учётом нулевых граничных условий

begin[1]: =false;[2]: =f [N_kl];

x [3]: =f [N_kl+1];;(N_kl=kolvokl) then

// если последнняя клетка с учётом нулевых граничных условий

begin[1]: =fpred [N_kl-1];[2]: =f [N_kl];[3]: =false;;(N_klkolvokl) then

// для всех остальных клеток[1]: =fpred [N_kl-1];[2]: =f [N_kl];[3]: =f [N_kl+1];

end;;

// вызов процедуры вычисления значения клетки[N_kl]: =znachf;

// занесение в массив значений клеток[N_kl]: =f [N_kl];

// запоминаем предыдущее состояние клетки

if f [N_kl] =false then

// вывод на экран

vivod: =vivod+'0': =vivod+'1';. Items. Add (vivod);

// вывод на экран;TPodschet. FormClose (Sender: TObject; var Action: TCloseAction);

begin. close;

// закрыть главную форму, т.е. завершить работу программы;.

Приложение Б

 

Внешний вид программы МОДЕЛИРОВАНИЯ СЕТИ КЛЕТОЧНЫХ АВТОМАТОВ. описание элементов управления

При запуске программы отображается и