Теория вычислительных процессов

 

Муниципальное образовательное учреждение

Высшего профессионального образования

Южно - Уральский профессиональный институт











Контрольная Работа

Теория вычислительных процессов


Студент

гр. ПСз-1-09, факультет Управления и информационных технологий

Э.К. Насыров









Челябинск

2013


Практические задачи


Задачи должны быть выполнены в Delphi. Решение задачи должно начинаться с построения математической модели. После чего должен быть представлен листинг программы и спецификация. Каждая задача должна сопровождаться необходимым количеством комментариев и содержать результаты выполнения программы. По каждой задаче должны быть составлены стандартные схемы программы и построена сеть Петри.

Вариант 3.

1.Постройте одноленточный автомат над алфавитом {a, b, c}, допускающий следующие множества слов: {anbbb | n ³ 0}, {ancbm | n ³ 1, m ³ 1}.

Математическая модель:=({a,b,c},-алфавит терминальных символов;

{q0,q1,q2,q3,q4,q5,q6},-множество состояний;

{q0a>q1 | q0b>q2 | q1a>q1 | q1b>q2 | q1c>q3 | q2b>q4 | q3b>q5 | q4b>q6 | q5b>q5 | q5#>q6},-множество переходов;,-начальное состояние;}-конечное состояние.

Дополнительно в алфавит программы введен символ #-пусто, как символ окончания ввода.


Сеть Петри.

программа символ сеть петри

В роли "полочек" или устройства выбирающего направление - выступает оператор.

Программа написана на Delphi 6, как приложение консоль.

1.program Project1;

2.

.{$APPTYPE CONSOLE}

.

.uses

.SysUtils;

.var

.State:integer;

.CurrentABC:string;

.CurrentJob:string;

.CurrentTerm:char;

.

.{Рекурсивная процедура преобразования строки}

14.function str2line(a:string):string;

15.begin{str2line}

.if length(a)>1{условие выхода из рекурсии}

17.then result:=a[1]+','+str2line(copy(a,2,length(a))){вставляем запятую после каждой буквы}

18.else result:=a[1];{единственная буква - копируем}

.end;{str2line}

.

.{вводим терминальный символ допустимого алфавита}

22.function LoadTerm(term_ABC:string;c:integer):char;

23.var

.d:string;

.begin{LoadTerm}

.repeat

.{выводим сообщение о состоянии и допустимых терминальных символах}

28.write('State ',c,'. Please enter the characters(',str2line(term_ABC),'):');

29.{вводи терминальный символ}

.readln(d);

31.if pos(d[1],term_ABC)=0 then writeln('Error! Expected characters: ',str2line(term_ABC)){сообщение об ошибке ввода}

32.until pos(d[1],term_ABC)>0;{выходим если введенный символ есть в допустимом алфавите алфавите}

.result:=d[1];{сохраняем результат работы}

.end;{LoadTerm}

.

.begin

.{начальная установка параметров}

.State:=0;{начальное состояние автомата}

.CurrentABC:='ab';{допустимый алфавит}

.CurrentJob:='';{результат работы автомата}

.{начало работы конечного автомата}

.repeat

.CurrentTerm:=LoadTerm(CurrentABC,State);{вводим терминальный символ}

.CurrentJob:=CurrentJob+CurrentTerm;{добавляем его в результат работы}

.{конечный автомат-контроль и изменение состояний}

.case State of

.0:case CurrentTerm of

.'a':begin

.State:=1;{переводим автомат в состояние 1}

.CurrentABC:='abc';{изменяем допустимый алфавит}

.end;

.'b':begin

.State:=2;{переводим автомат в состояние2}

.CurrentABC:='b';{изменяем допустимый алфавит}

.end;

.end;{case CurrentTerm of}

.{state=0}

.1:case CurrentTerm of

.'b':begin

.State:=2;{перводим автомат в состояние 2}

.CurrentABC:='b';{изменяем допустимый алфавит}

.end;

.'c':begin

.State:=3;{переводим автомат в состояние 3}

.CurrentABC:='b';{изменяем допустимый алфавит}

.end;

.end;{case CurrentTerm of}

.{state=1}

.2:State:=4;{переводим автомат в состояние 4}

.{state=2}

.3:begin

.State:=5;{переводи автомат в состояние 5}

.CurrentABC:='b#';{изменяем допустимый алфавит}

.end;

.{state=3}

.4:State:=6;{переводим автомат в режим окончания работы}

.{state=4}

.5:if CurrentTerm='#' then State:=6;{проверяем окончание работы автомата}

.{state=5}

.end;{case state of}

.until State=6;

82.if pos('#',CurrentJob)>0 then delete(CurrentJob,pos('#',CurrentJob),1);{удаляем символ окончания работы}

.Writeln('Result: ',CurrentJob);{вывод результата работы}

.Readln(CurrentJob);{ожитания наджатия клавиши ВВОД}

85.end.

Программа реализует оба множества последовательностей (anbbb, где n=0,1,2,... и ancbm, где n,m=1,2,3,...)

При попытке ввести неверный символ выдается ошибка и ввод повторяется.


Литература


Основная

1.Бройдо В.Л. Вычислительные системы, сети телекоммуникации. - СПб.: Питер, 2005. - 568 с.

.Мелехин В.Ф. Вычислительные машины, системы и сети. - М.: Академия, 2006. - 560 с.

.Пятибратов А.П. Вычислительные системы, сети телекоммуникации. - М.: Финансы и статистика, 2005. - 470 с.

Дополнительная

1.Высшая математика / Под ред. Н.М. Кремера. - М.: ЮНИТИ - ДАНА, 2007

2.Дорофеева А.В. Высшая математика. - М.: Дрофа, 2003. - 384 с.: ил.

3.Хандадашева Л.Н. Программное обеспечение. Вычислительные сети. - Ростов н/Д.: МарТ, 2005. - 320 с.


Муниципальное образовательное учреждение Высшего профессионального образования Южно - Уральский профессиональный институт

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ