3. Руководство пользователя, инструкция инсталяции
При разработке программного комплекса было создано Win32 – приложение. Требования к аппаратным средствам:
– Windows 95, Windows NT 4.0 и выше
– 2 Mb дискового пространства для минимальной конфигурации (только выполняемые файлы)
– 3 Mb дискового пространства для нормальной конфигурации (выполняемые файлы и тексты модулей, а также справка)
– Процессор 80486 (лучше 80586)
– 16 Mb RAM
Для нормального функционирования программного продукта следует выполнить следующее:
– Ознакомиться с файлом readme.txt;
– Создать папки на компьютере с таким адресом:
– 'C:\Program Files\Internet Explorer\Iexplore.exe F:\Моя курсовая работа\Моя Web-страница\Справка.mht
– Извлечь в данную папку все файлы из архива, копировать туда исполняющий файл программы (Primer4.exe), проследить чтобы также там был файл Справка. mht.
– Для начала работы с ПП запустите Primer4.exe.
3.3 Тестовые варианты программы (печатный и прописной вариант)
Пример 1.
Запустим файл Primer4.exe. Вводим состояния и алфавит (рисунок 7) и заполянем управляющую таблицу (рисунок 8):
Рисунок 7 – Ввод состояний и алфавита
Рисунок 8 – Заполнение управляющей таблицы.
Строим грамматику (рисунок 9):
Рисунок 9 – Полученная граматика
Пример 2.
Запустим файл Primer4.exe. Вводим состояния и алфавит (рисунок 10), заполняем управляющую таблицу (рисунок 11):
Рисунок 10 - Ввод состояний и алфавита
Рисунок 11 - Заполнение управляющей таблицы
Строим грамматику (рисунок 12):
Рис.12 – Полученная граматика
Выводы
В рамках данной курсовой работы мною была разработана программа построения грамматики для заданного конечного автомата. А также я ознакомилась с теорией конечных автоматов и грамматик, научилась писать программы - конструкторы для построения автоматных грамматик закрепила умение работы в среде Delphi 7.0. Была создана справочная система в виде Web-страницы, в которой находится подробная справка по работе с программы продуктом. Написано вступление, где рассматривается общий обзор средств электронной связи.
Список литературы
1 Яблонский С.В. «Введение в дискретную математику: Учеб. пособие для вузов» / С.В Яблонский, - М.: Наука, 1986 – 384с.
2 «Разработка приложений в среде Delphi», -М.: Издательский дом “Вильямс”,2000.-464 с.
3 Грис Д.П. « Конструирование компиляторов для цифровых вычислительных машин» / Д.П. Грис, – М.: Мир, 1975. – 544 с.
4 Кузнецов О.П. «Дискретная математика для инженера» / О.П. Кузнецов, Г.М. Адельсон-Вельский, – М: Энергоатомиздат, 1988.– 480 с.
5 Лебедев А.Н.«Моделирование в научно-технических исследованиях» / А.Н.Лебедев, - М.:Москва 1989.-519с.
6 Суворова Н.И. «Информационное моделирование. Величины, объекты, алгоритмы » / Н.И. Суворова, - М.:2002.
7 Богдан М.П. «Краткий курс лекций по дисциплине “ Основы дискреной математики”» / М.П. Богдан, – Краматорск: ДГМА,2002.
8 Новиков Ф.А. «2Дискретная математика для программистов» / Новиков Ф.А., – СПб: Питер, 2000. – 304с.
Приложение А
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, Menus, HtmlHlp;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
BitBtn2: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
ListBox1: TListBox;
BitBtn3: TBitBtn;
N7: TMenuItem;
N8: TMenuItem;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
N9: TMenuItem;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses unit2,unit4,unit3;
var Sostin:set of char;
procedure TForm1.BitBtn1Click(Sender: TObject);
var s1,s2,s:string;
i,j:integer;
begin
s1:=Edit2.Text;
s2:=Edit1.Text;
StringGrid1.ColCount:=Length(s1)+2;
StringGrid1.RowCount:=length(s2)+1;
StringGrid1.Cells[Length(s1)+1,0]:='-|';
for i:=1 to Length(s2) do
StringGrid1.Cells[0,i]:=s2[i];
for i:=1 to Length(s1) do
StringGrid1.Cells[i,0]:=s1[i];
for i:=1 to length(s2)-1 do
for j:=i+1 to length(s2) do
if (s2[i]=s2[j]) then begin
MessageBox(form1.Handle,'Введи правильно состояния не должны повторяться!!!','Error',mb_ok or mb_iconerror);
edit1.SetFocus;
exit;
end;
for i:=1 to length(s2) do
if not ((s2[i]>='A') and (s2[i]<='Z')) then begin
MessageBox(form1.Handle,'Введите правильно состояния!!!', 'Error',mb_ok or mb_iconerror);
edit1.SetFocus;
exit;
end;
for i:=1 to length(s1)-1 do
for j:=i+1 to length(s1) do
if (s1[i]=s1[j]) then begin
MessageBox(form1.Handle,'Введи правильно буквы алфавита не должны повторяться!!!','Error',mb_ok or mb_iconerror);
edit2.SetFocus;
exit;
end;
for i:=1 to length(s1) do
if not ((s1[i]>='a') and (s1[i]<='z')) then begin
MessageBox(form1.Handle,'Введите правильно буквы алфавита!!!','Error',mb_ok or mb_iconerror);
edit2.SetFocus;
exit;
end;
for i:=0 to stringgrid1.ColCount-1 do
StringGrid1.ColWidths[i]:=(Stringgrid1.ClientWidth div stringgrid1. ColCount)-1;
for i:=0 to stringgrid1.RowCount-1 do
StringGrid1.RowHeights[i]:=(Stringgrid1.ClientHeight div stringgrid1. RowCount)-1;
Sostin:=['0'];
s:=Edit1.Text;
for i:=1 to Length(s) do
Sostin:=Sostin+[s[i]];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
form3.ShowModal;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
form2.ShowModal;
end;
procedure TForm1.N6Click(Sender: TObject);
var s1,s2:string;
i,j:integer;
begin
s1:=Edit2.Text;
s2:=Edit1.Text;
StringGrid1.ColCount:=Length(s1)+2;
StringGrid1.RowCount:=length(s2)+1;
StringGrid1.Cells[Length(s1)+1,0]:='-|';
for i:=1 to Length(s2) do
StringGrid1.Cells[0,i]:=s2[i];
for i:=1 to Length(s1) do
StringGrid1.Cells[i,0]:=s1[i];
for i:=1 to length(s2)-1 do
for j:=i+1 to length(s2) do
if (s2[i]=s2[j]) then begin
MessageBox(form1.Handle,'Введи правильно состояния не должны повторяться!!!','Error',mb_ok or mb_iconerror);
edit1.SetFocus;
exit;
end;
for i:=1 to length(s2) do
if not ((s2[i]>='A') and (s2[i]<='Z')) then begin
MessageBox(form1.Handle,'Введите правильно состояния!!!',' Error',mb_ok or mb_iconerror);
edit1.SetFocus;
exit;
end;
for i:=1 to length(s1)-1 do
for j:=i+1 to length(s1) do
if (s1[i]=s1[j]) then begin
MessageBox(form1.Handle,'Введи правильно буквы алфавита не должны повторяться!!!','Error',mb_ok or mb_iconerror);
edit2.SetFocus;
exit;
end;
for i:=1 to length(s1) do
if not ((s1[i]>='a') and (s1[i]<='z')) then begin
MessageBox(form1.Handle,'Введите правильно буквы алфавита!!!','Error',mb_ok or mb_iconerror);
edit2.SetFocus;
exit;
end;
for i:=0 to stringgrid1.ColCount-1 do
StringGrid1.ColWidths[i]:=(Stringgrid1.ClientWidth div stringgrid1. ColCount)-1;
for i:=0 to stringgrid1.RowCount-1 do
StringGrid1.RowHeights[i]:=(Stringgrid1.ClientHeight div stringgrid1. RowCount)-1;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
var i,j:integer;
stroka:string;
begin
ListBox1.Items.Clear;
for i:=1 to Stringgrid1.RowCount-1 do begin
stroka:='';
for j:=1 to Stringgrid1.ColCount-1 do begin
if (stringgrid1.Cells[j,i]>='A') and (stringgrid1.Cells[j,i]<='Z') then begin
stroka:=stroka+stringgrid1.Cells[0,i];
stroka:=stroka+'>'+stringgrid1.Cells[j,0];
stroka:=stroka+stringgrid1.Cells[j,i];
ListBox1.Items.Add(stroka);
end
else if (stringgrid1.Cells[j,i]='+') then begin
stroka:=stroka+stringgrid1.Cells[0,i];
stroka:=stroka+'>'+'*';
ListBox1.Items.Add(stroka);
end;
stroka:='';
end;
end;
end;
procedure TForm1.N7Click(Sender: TObject);
var i,j:integer;
stroka:string;
begin
ListBox1.Items.Clear;
for i:=1 to Stringgrid1.RowCount-1 do begin
stroka:='';
for j:=1 to Stringgrid1.ColCount-1 do begin
if (stringgrid1.Cells[j,i]>='A') and (stringgrid1.Cells[j,i]<='Z') then begin
stroka:=stroka+stringgrid1.Cells[0,i];
stroka:=stroka+'>'+stringgrid1.Cells[j,0];
stroka:=stroka+stringgrid1.Cells[j,i];
ListBox1.Items.Add(stroka);
end
else if (stringgrid1.Cells[j,i]='+') then begin
stroka:=stroka+stringgrid1.Cells[0,i];
stroka:=stroka+'>'+'*';
ListBox1.Items.Add(stroka);
end;
stroka:='';
end;
end;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
form4.ShowModal;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
form4.ShowModal;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
const Dop=['+','-'];
var dost:set of char;
i,j:integer;
sost:string;
nedost:boolean;
begin
for i:=1 to StringGrid1.RowCount-1 do
for j:=1 to StringGrid1.ColCount-1 do begin
if (j=StringGrid1.ColCount-1) then
if not (StringGrid1.Cells[j,i][1] in Dop) then begin
ShowMessage('Введен неверный символ!Н');
StringGrid1.Row:=i;
StringGrid1.Col:=j;
exit;
end
else
continue;
if not (StringGrid1.Cells[j,i][1] in Sostin) then begin
ShowMessage('Введен неверный символ!');
StringGrid1.Row:=i;
StringGrid1.Col:=j;
exit;
end;
end;
nedost:=false;
dost:=[];
sost:=StringGrid1.Cells[0,1];
dost:=dost+[sost[1]];
for i:=1 to StringGrid1.RowCount-1 do
for j:=1 to StringGrid1.ColCount-2 do begin
sost:=StringGrid1.Cells[j,i];
if (not (sost[1] in dost)) and (StringGrid1.Cells[0,i][1] in dost) then
dost:=dost+[sost[1]];
end;
for i:=1 to StringGrid1.RowCount-1 do
if not (StringGrid1.Cells[0,i][1] in dost) then begin
MessageBox(form1.Handle,pchar('Состояние '+StringGrid1.Cells[0,i][1]+' является недостижимым!!!'),'Error',mb_iconerror or mb_ok);
nedost:=true;
end;
if not nedost then
BitBtn3.Enabled:=true;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
WinExec('C:\Program Files\Internet Explorer\Iexplore.exe F:\Моя курсовая работа\Моя Web-страница\Справка.mht',1);
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
ListBox1.Clear;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Sostin:=[];
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
form2.ShowModal;
end;
end