Лабораторная работа «Разработка блока синтеза комбинационных схем для САПР ЦУ»
1. Цель работы: научиться разрабатывать элементы программных систем автоматизированного проектирования; научиться работать в коллективе проектировщиков программного обеспечения, разрабатывать спецификации и элементы программ согласно с ней. Научиться связывать программные модули.
2. Постановка задачи: разработать элемент программной системы в виде подпрограммы или функции согласно варианту задания. Перед разработкой обсудить с разработчиками смежных компонентов системы формат входных, выходных данных и составить необходимые спецификации. Разработка ведется по группам из 6-8 человек, каждая группа разрабатывает конечный программный продукт, представленный главным программистом. Назначение програмного продукта; минимизация систем неполностью определенных булевых функций.
3. Вариант задания: Построение таблицы покрытий по интервальным формам.
4. Текст программы.
unit LAB2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Menus, Grids;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
tbl3: TStringGrid;
MainMenu1: TMainMenu;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
File1: TMenuItem;
Open1: TMenuItem;
Save1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Button1: TButton;
Button2: TButton;
GroupBox3: TGroupBox;
tbl2: TStringGrid;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ShowTable1;
procedure ShowTable2;
end;
const osn : array [1..15] of word = (1 , 2, 4, 8, 16, 32, 64, 128, 512, 1024, 2048, 4096, 8192, 16384, 32768);
var
Form1: TForm1;
kp, ki, kt : word;
tbl_t : array [1..15] of word;
tbl_i : array [1..15,1..3] of word;
i, j : word;
implementation
{$R *.DFM}
procedure TForm1.ShowTable1();
var k1,k2 : byte;
i, j : word;
begin
for i:=1 to ki do
for j:=1 to kp do
begin
k1:=tbl_i[i,1] and osn[kp+1-j];
k2:=tbl_i[i,2] and osn[kp+1-j];
if (k1=0) then
tbl2.Cells[j, i]:=IntToStr(0)
else
if (k2=0) then
tbl2.Cells[j, i]:=IntToStr(1)
else
tbl2.Cells[j, i]:='-';
end;
end;
Procedure TForm1.ShowTable2();
var i, j : word;
begin
for i:=1 to ki do
for j:=1 to kt do
begin
if (tbl_i[i,3] and osn[j])<>0 then
tbl3.Cells[j, i]:=IntToStr(1);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
halt(1);
end;
procedure TForm1.Open1Click(Sender: TObject);
var f : textfile;
i, j : byte;
begin
if OpenDialog1.Execute then
begin
AssignFile(F, OpenDialog1.FileName);
Reset(F);
Read(F, kp, ki, kt);
for i:=1 to ki do read(F, tbl_i[i,1], tbl_i[i,2], tbl_i[i,3]);
Edit1.Text:=IntToStr(kp);
Edit2.Text:=IntToStr(ki);
tbl2.ColCount:=kp+1;
tbl2.RowCount:=ki+1;
for i:=1 to kp do
for j:=1 to ki do
begin
tbl2.Cells[i,0]:=IntToStr(i);
tbl2.Cells[0,j]:=IntToStr(j);
end;
ShowTable1;
CloseFile(F);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i, j : word;
begin
tbl3.ColCount:=kt;
tbl3.RowCount:=ki+1;
for i:=1 to kt do
for j:=1 to ki+1 do
begin
tbl3.Cells[i,0]:=IntToStr(i);
tbl3.Cells[0,j]:=IntToStr(j);
end;
ShowTable2;
end;
procedure TForm1.Save1Click(Sender: TObject);
var f : file of word;
i : byte;
begin
if SaveDialog1.Execute then
begin
AssignFile(f, SaveDialog1.FileName);
rewrite(f);
kt:=kt-1;
write(F, kt, ki);
for i:=1 to kt do
begin
write(f, tbl_i[i,3]);
writeln;
end;
CloseFile(f);
end
else
begin
MessageDlg('Ошибка сохранения файла', mtError, [mbOk], 0);
end;
end;
end.
5. Вывод: в ходе лабораторной работы научились разрабатывать элементы программных систем автоматизированного проектирования, работать в коллективе проектировщиков программного обеспечения, разрабатывать спецификации и элементы программ согласно с ней, связывать программные модули. Была разработана программа, выполняющая построение таблицы покрытий по интервальным формам.