Программирование конечного автомата



РОСЖЕЛДОР

Федеральное государственное бюджетное образовательное учреждение

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

«Ростовский государственный университет путей сообщения»

(ФГБОУ ВПО РГУПС)

 

Кафедра «ВТ и АСУ»

 

 

Отчёт по лабораторным работам по дисциплине

«Системное программное обеспечение»

                       

 

              

 

 

Выполнил студент группы

АИ-3-024                          ____________________ А.В. Кривощёков

                                                                                              (подпись)

Проверил

к.т.н., доцент                         ____________________ В.В. Жуков

                                                    (подпись)

 

 

2012

Лабораторная работа №1

Формирование очередей в динамической памяти

 

1) Цель работы: Создать двунаправленный список типа FiFo. Программа должна включать в себя процедуры добавления элемента в список и его извлечения.

 

2) Исходный текст программы:

 

program FIFO;

   type tp=^tu;

   tu=record

   d:integer;

   p:tp;

   end;

var q,vhod:tp;

x,y:integer;

procedure dobavlenie (x:integer);

     begin

     new(vhod);

     vhod^.p:=q;

     vhod^.d:=x;

     q:=vhod;

     end;

procedure izvlechenie (var x:integer);

var k:tp;

begin

q:=vhod;

if vhod=nil then writeln ('spisok pust')

else while q<>nil do

    begin

    k:=q;

    q:=q^.p;

    end;

x:=k^.d;

writeln(x);

k^.p:=nil;

dispose(k);

q:=vhod;

end;

BEGIN

 q:=nil; vhod:=nil;

 writeln(‘введите элемент списка’);

 readln(x); dobavlenie(x);

 writeln(‘введите элемент списка’);

 readln(x); dobavlenie(x);

 writeln(‘введите элемент списка’);

 readln(x); dobavlenie(x);

 writeln('________');

 izvlechenie (y);

 END.

 

3) Результат:

введите элемент списка

32

введите элемент списка

45

введите элемент списка

85

_______

32

 


Лабораторная работа №2

Программирование конечного автомата

1)Цель работы: Написать программу конечного автомата на пять состояний. Каждое из них нагрузить выводом на экран номера того состояния, которое автомат покинул.

 

Графическое представление конечного автомата:

 

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

 

Program avtomat;

var x,S:integer;

Begin

s:=0;

repeat

writeln ('Vvedite vhodnoe vozdeistvie');

write('x= ');

readln (x);

case s of

0:begin

  if x>5 then begin

              writeln('s= ',s);

              s:=1;

              end

  else if x=5 then begin

              writeln('s= ',s);

              s:=2;

              end

  else if x<2 then begin

              writeln('s= ',s);

              s:=4;

              end

  else begin

              writeln('s= ',s);

              s:=3;

              end;

end;

1:begin

  if x>7 then begin

              writeln('s= ',s);

              s:=4;

              end;

end;

2:begin

  if x=6 then begin

              writeln('s= ',s);

              s:=3;

              end;

  if x>8 then begin

              writeln('s= ',s);

              s:=0;

              end;

end;

3:begin

  if x=8 then begin

              writeln('s= ',s);

              s:=4;

              end;

end;

end;

until s=4;

end.

Пример выполнения программы


Vvedite vhodnoe vozdeistvie

x= 5

s= 0

Vvedite vhodnoe vozdeistvie

x= 9

s= 2

Vvedite vhodnoe vozdeistvie

x= 4

s= 0

Vvedite vhodnoe vozdeistvie

x= 8

s= 3



Лабораторная работа №3

Программирование конечного автомата для транслитерации

 

1) Цель работы: Создать файл с русским текстом. Написать автомат, который переведет русские буквы в символы латинского алфавита. Результат записать в другой файл.

Графическое представление конечного автомата:

2) Исходный текст программы:


program translit;

const string1:array [1..2] of char=('ъ','ь');

     string2ru:array [1..25] of char=('а','б','в','г','д','е','ё','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ы','э');

     string3ru:array [1..7] of char=('ж','ч','ш','щ','ы','ю','я');

     string2en:array [1..25] of char=('a','b','v','g','d','e','e','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','y','e');

     string3en:array [1..7] of string=('zh','ch','sh','sch','bl','yu','ya');

var c:char;

s:string;

f,f1:text;

state,i,x:integer;

procedure compare(c:char; var i,state,x:integer);

begin for i:=1 to 2 do

if c=string1[i] then

  begin

  x:=i;

  state:=1;

  exit;

  end;

for i:=1 to 25 do

if c=string2ru[i] then

  begin

  x:=i;

  state:=2;

  exit; end;

for i:=1 to 7 do

if c=string3ru[i] then

  begin

  x:=i;

  state:=3;

  exit;

  end;

state:=4;

end;

procedure trans1(c:char; var i,state,x:integer);

begin

s:=s+string2en[x];

state:=1;

end;

procedure trans2(c:char; var i,state,x:integer);

begin

s:=s+string3en[x];

state:=1;

end;

procedure trans3(c:char; var i,state,x:integer);

begin

s:=s+c;

state:=1;

end;

begin

assign(f,'text.txt');

reset(f);

assign(f1, 'data_out.txt');

rewrite(f1);

state:=1;

repeat

case state of

1:begin read(f,c); compare(c,i,state,x); end;

2:begin trans1(c,i,state,x); end;

3:begin trans2(c,i,state,x); end;

4:begin trans3(c,i,state,x); end;

else begin writeln('Перевод окончен.'); end; end;

until eof(f);

close(f);

write(f1,s);

close(f1);

end.


3) Результат:

'text.txt': привет мой хозяин

'data_out.txt': privet moi hozyain



Лабораторная работа №4

Программирование конечного автомата

 

1) Цель работы: Разработать конечный автомат, разметить его, написать программу, которая выбирает целые числа из текста и выводит их на экран.

Графическое представление конечного автомата:

2) Исходный текст программы:

 


program avtomat4;

var x:char;

f1: text;

s: integer;

flag: boolean;

buffer: string;

begin s:=0;

flag:=false;

assign(f1,'4.txt');

reset(f1);

while flag=false do begin

case s of

0: begin

read(f1,x);

          if x in ['0'..'9'] then begin s:=1; buffer:=x; end;

          if eof(f1)=true then s:=2;

     end;

1: begin

          read(f1,x);

          if x in ['0'..'9'] then begin buffer:=buffer+x; end else

          begin writeln(buffer); s:=0; end;

     end;

2: begin

          flag:=true;

          close(f1);

    end;

end; //case

end; //while

end.

 

3) Файл содержит в себе следующий текст: dtu76ghfc456hjlkj8f

Результат:

76     456        8


Лабораторная работа №5


Дата добавления: 2018-04-05; просмотров: 325; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!