Метод синтеза генераторов детерминированных тестов на сетях клеточных автоматов (СКА)
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
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;
// закрыть главную форму, т.е. завершить работу программы;.
Приложение Б
Внешний вид программы МОДЕЛИРОВАНИЯ СЕТИ КЛЕТОЧНЫХ АВТОМАТОВ. описание элементов управления
При запуске программы отображается и