Лабораторные работы по информатике
1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00 (0 Голоса)

Лабораторная работа по дисциплине: “АПВС”

Цель работы:

Разработать программный модуль, реализующую преобразование двоичной информации на входе (число переменных, число функций, число интервалов, матрицу интервалов, матрицу функции) в соответствующую текстовую информацию для ПЛМ с заданными параметрами.

Описание программы:

Программа состоит из нескольких процедур основными из которых являются:

Tform1.zapis – процедура считывающая исходные данные из файла и записывающая их во внутреннюю память программы, представленную массивом записей.

TForm1.obrabotka – процедура обрабатывающая строки матрицы интервалов, представленные парой шестнадцатибитовых векторов, и строки матрицы функций.

Обработка происходит следующим образом: выделяем по 1 бит в соответствующих векторах и записываем в выходной файл соответствующее значение Х: 11 –, 10 - 1,01 - 0 , если комбинация битов недопустима – 00 то выводится сообщение о неправильном формате входных данных.

В программе используется следующие структуры:

str=record

int:array [1..2] of word;

func:word;

end;

Запись, которая представляет собой строку матрицы интервалов (int:array [1..2] of word;) – пара 16 битных векторов, и соответствующую ее строку матрицы функций func - 16 битный вектор.

Data=array of str - массив записей представляет собой матрицу интервалов и функций.

Входные данные должны находиться в файле c:\input. dat при неправильных несоответствии входных данных программа выдаст ошибку при загрузке. Параметры ПЛМ вводятся в форму, при невозможности построить на ПЛМ с заданными параметрами программа выдает ошибку и завершает свою работу.

Выходными данными является текстовый файл c:\output. txt

Тестовый пример:

Шестнадцатиричный файл

03 00 05 00 05 00 00 78 00 98 00 В8 00 48 00 F0 00 C8 00 68 00 B0 00 68 00 98 00 80 00 40 00 80 00 20 00 60

X1

X2

X3

X4

X5

 

Y1

Y2

Y3

0

1

1

1

1

 

1

   

1

0

0

1

1

1

0

1

1

1

 

1

 

0

1

0

0

1

1

1

1

1

0

1

   

1

1

0

0

1

0

1

1

0

1

   

1

1

0

1

1

0

0

1

1

0

1

 

1

1

1

0

0

1

1

Результат работы программы:

Число функций 3

Число переменных 5

Число интервалов 5

X1

X2

X3

X4

X5

Y1

Y2

Y3

1

0

0

-

-

1

0

0

0

1

0

0

-

0

1

0

-

-

0

0

1

1

0

0

1

0

-

1

0

0

0

1

1

0

0

1

-

0

1

1

Вывод: в ходе выполнения лабораторной работы была разработана программа реализующая двоичной информации на входе (число переменных, число функций, число интервалов, матрицу интервалов, матрицу функции) в соответствующую текстовую информацию для ПЛМ с заданными параметрами.

Текст программы:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Label1: TLabel;

Edit2: TEdit;

Label2: TLabel;

Edit3: TEdit;

Label3: TLabel;

procedure edit1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

procedure zapis;

procedure obrabotka;

{ Public declarations }

end;

var

Form1: TForm1;

chf, chp, chi, buf:word;

size, s,num:integer;

f: file of word;

f1: TextFile;

type

str=record

int:array [1..2] of word;

func:word;

end;

Data=array of str;

implementation

var

d:data;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

assignFile(f,'c:\input. dat');

reset(f);

size:=FileSize(f);

Read(f, buf);

chf:=buf;

Read(f, buf);

chp:=buf;

Read(f, buf);

chi:=buf;

s:=3*chi+3;

if s<>size then begin

showMessage('Неверные входные данные');

exit;

end;

zapis;

ShowMessage ('Файл загружен');

end;

procedure Tform1.zapis;

var

i, j:integer;

begin

SetLength(D, chi);

for i:=0 to chi-1 do

begin

for j:=1 to 2 do

begin

Read(f, buf);

D[i].int[j]:=buf;

end;

end;

for i:=0 to chi-1 do

begin

read(f, buf);

D[i].func:=buf;

end;

end;

procedure TForm1.obrabotka;

var

d1,d2,d11,d22,func1,func2:word;

i, j,k:integer;

buf1:string;

begin

assignFile(f1,'c:\output. txt');

rewrite(f1);

writeln(f1,'Число функций ',chf);

writeln(f1,'Число переменных ',chp);

writeln(f1,'Число интервалов ',chi);

for i:=1 to chp do write (f1,' X',i,' ');

for i:=1 to chf do write (f1,' Y',i,' ');

writeln(f1,'');

for i:=0 to chi-1 do

begin

d1:=D[i].int[1];

d2:=d[i].int[2];

for j:=1 to chp do

begin

d11:=(d1 and 32768);

d11:=d11 shr 15;

d22:=(d2 and 32768);

d22:=d22 shr 15;

d1:=d1 shl 1;

d2:=d2 shl 1;

if d22=0 then

begin

if d11=1 then write (f1,' 0 ') else

begin

Showmessage('Неправильная кодировка');

exit;

end;

end else

begin

if d11=0 then write (f1,' 1 ') else write (f1,' - ');

end;

end;

func1:=D[i].func;

for k:=1 to chf do

begin

func2:=(func1 and 32768);

func2:=func2 shr 15;

func1:=func1 shl 1;

if func2=0 then write (f1,' 0 ') else write (f1,' 1 ');

end;

writeln(f1,'');

end;

CloseFile(f1);

end;

procedure TForm1.Button2Click(Sender: TObject);

var

a, n,m, q:integer;

begin

a:=0;

n:=StrtoInt(edit1.text);

m:=StrToInt(Edit2.Text);

q:=StrToInt(Edit3.Text);

if n<chp then

begin

ShowMessage('Количество входов должно быть не меньше '+IntToStr(chp));

a:=1;

end;

if m<chf then

begin

ShowMessage('Количество выходов должно быть не меньше '+IntToStr(chf));

a:=1;

end;

if q<chi then

begin

ShowMessage('Количество внутренних переменных должно быть не меньше '+IntToStr(chi));

a:=1;

end;

if a<>0 then exit;

obrabotka;

end;

procedure TForm1.edit1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if (not(((key>48)and(key<58))or((key>96)and(key<106))or(key=8))) then

ShowMessage('Введите цифры от 1 до 9 ');

end;

end.

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство

Агрономия

Преподавателям

Юридические темы

Google