Студопедия

Главная страница Случайная лекция


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

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



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




НАД ЦИФРОВЫМИ АВТОМАТАМИ

 

program openadca;

{$M 64000,0,4000}

uses printer,crt;

 

{ oпеpации над автоматами }

 

label 1,2;

type cu=string[6];

pok=packed array[1..5] of cu;

{ pok=packed array[1..200] of cu; }

mca=packed array[1..10,1..10] of cu;

mas=packed array[1..20] of char;

st=string[20];

var s,f1:text; sim:char; fam:string[20];

poka,pokb,pokc,pokd,poke,pof:pok;

{ var pokc,pokc1,pokz:pok;}

cub,cub1,cud9,cub99:cu;

var mcaa1,mcaa2,mcaa3,mcaa4,mcab1,mcab2,mcab3,mcab4,

mcac1,mcac2,mcac3,mcac4,mcad1,mcad2,mcad3,mcad4,

mcae1,mcae2,mcae3,mcae4,mcaf1,mcaf2,mcaf3,mcaf4,

mcag1,mcag2,mcag3,mcag4,mcah1,mcah2,mcah3,mcah4,

mcau1,mcau2,mcal1,mcal2,mcal3,mcal4,mcap1,mcap2,

mca11,mcap12,mcap13,mcap14,mcap21,mca22,mcap23,

mcap24:mca; { mca }

ya,yb,yc,yd,ye,yf,yg,yh,y0,y1,yu,yl:mas; { сост-я S }

mya,myb,myc,myd,mye,myf,myg,myh,myl,my0,my1,myu,myab,myba,mya1,

myb1,{ мощности множеств}

mpemca,nva,ngr,nlstc,nlstd,nlscc,nlscd,nsccc1,nscdc1, nstcc1,nstdc1,

i,j,k,l,g,h,m,n,k1,kk,prpusca,pravm,pravc,pravp,prava, prravca, protca, pperm,pperc,ppera,

nlst,nlsc,p1lst,p1lsc,nsc1,nst1,ns,sc,nc,nx,km,sp, pvx,pzp:integer;

const st1='a';st2='b';st3='c';st4='d';st5='e';st6='f';st7='g';

st8='h';st9='m';st10='n';st11=' группа ';st12=' вариант '; st13='u';st14='l';

 

{ опрации над множествами }

 

{1 - пересечение множеств }

procedure perm(p1,p2:mas;mp1,mp2:integer;var p:mas; var mp:integer);

label 1;

var i,j:integer; begin mp:=0;

for i:=1 to mp1 do begin for j:=1 to mp2 do if p1[i]=p2[j]

then begin mp:=mp+1;p[mp]:=p1[i]; goto 1; end; 1:end; end;

 

{2 - ‘закачка’ множества во множество }

procedure zakm(p1:mas;mp1:integer; var p:mas; var mp:integer);

var i:integer;

begin mp:=0; for i:=1 to mp1 do begin mp:=i;p[i]:=p1[i];end;end;

 

{3 - вычитание множеств }

procedure vicm(p1,p2:mas;mp1,mp2:integer;var p:mas;var mp:integer);

label 1; var i,j:integer; begin

for j:=1 to mp1 do begin for i:=1 to mp2 do begin if p2[i]=p1[j]

then goto 1; end; mp:=mp+1;p[mp]:=p1[j]; 1:end ; end;

 

{4 - объединение множеств }

procedure obm(p1,p2:mas;mp1,mp2:integer;var p:mas;var mp:integer);

begin zakm(p1,mp1,p,mp);vicm(p2,p1,mp2,mp1,p,mp); end;

 

{5 - упорядочение множествa }

procedure yporm(var p:mas; var mp:integer);

label 1;

var i,j:integer; sim:char; begin

for i:=1 to mp-1 do begin for j:=i+1 to mp do if p[i]>p[j]

then begin sim:=p[j];p[j]:=p[i];p[i]:=sim;goto 1; end; 1:end; end;

 

{6 - проверка равенства множеств p1 и p2 }

procedure ravm(p1,p2:mas;mp1,mp2:integer);

var mf,me:integer;f,e:mas;

begin mf:=0; me:=0; vicm(p1,p2,mp1,mp2,f,mf);

vicm(p2,p1,mp2,mp1,e,me);writeln(lst); if(me=0) and (mf=0)

then begin pravm:=1;write(lst,'равны ') end else begin pravm:=0;

write(lst,'не равны '); end; end;

 

{7 - печать множества, его мощности}

procedure pecm(p:mas;mp:integer;pst:st);

var i:integer;

begin writeln(lst);write(lst,'my',pst,'=',mp,' y',pst,'=(');

for i:=1 to mp do write(lst,' y',p[i]); write(lst,' )'); end;

 

{ oперации над кубами и покрытиями }

 

{8 - ‘закачка’ куба в куб c признаком}

procedure zakc(var pcub:cu;pcub1:cu);

var i1:integer;

begin pcub:=' ';for i1:=1 to ns do pcub[i1]:=pcub1[i1];

end;

 

{9 - ‘закачкa' куба в куб без признака}

procedure zakc1(var pcub:cu;pcub1:cu);

var i1:integer;

begin pcub:=' ';for i1:=2 to ns do pcub[i1]:=pcub1[i1];

end;

 

{10 - печать куба }

procedure pecc(pcub:cu);

var i2:integer; begin

for i2:=1 to ns do write(pcub[i2]);write(' '); end;

 

{11 - ‘закачкa’ покрытия pok1 в pokp }

procedure zakp(var pokp:pok;var mpp:integer;pokp1:pok; mpp1:integer);

var i3:integer;

begin mpp:=0;

for i3:=1 to mpp1 do begin mpp:=i3;pokp[i3]:=' ';

pokp[i3]:=pokp1[i3];end; end;

 

{12 - oпределение равенства кубов }

procedure ravc(pcub1,pcub2:cu);

label 1; var i4:integer;

begin pravc:=0; writeln(lst); for i4:=1 to ns do

if pcub1[i4]<>pcub2[i4] then begin pravc:=1;write(lst,'не paвны');

goto 1;end; write(lst,'pавны');1:end;

 

{13 - ‘подстыковкa’ куба к покрытию }

procedure stpc(var pokp:pok;var mpp:integer;pcub:cu);

begin mpp:=mpp+1;pokp[mpp]:=' ';pokp[mpp]:=pcub; end;

 

{14 - ‘стыковкa’ pokp2 с pokp1 }

procedure stpp(var pokp1:pok;var mpp1:integer;pokp2:pok;mpp2

:integer);

var i6:integer; begin

for i6:=1 to mpp2 do begin mpp1:=mpp1+1;pokp1[mpp1]:=' ';

pokp1[mpp1]:=pokp2[i6];end;end;

{15 - пересечение кубов }

procedure perc(pcub1,pcub2:cu;var pcub:cu);

label 1; var i7:integer; begin pperc:=0;pcub:=' ';

for i7:=1 to ns do if (pcub1[i7]=pcub2[i7]) or (pcub2[i7]='X')

then pcub[i7]:=pcub1[i7] else if pcub1[i7]='X' then

pcub[i7]:=pcub2[i7] else begin pperc:=1; goto 1;end; 1:end;

 

{16 - вычитание кубов }

procedure vicc(pcub1,pcub2:cu;var pokp:pok;var mpp:integer);

label 1; var i9,kv,ko1:integer;cub9:cu;

begin

mpp:=0;kv:=0;ko1:=0; cub9:=' ';for i9:=1 to ns do

begin if (pcub2[i9]='X') or (pcub1[i9]=pcub2[i9]) then begin

cub9[i9]:='v'; kv:=kv+1;;end else if pcub1[i9]<>'X' then begin

ko1:=ko1+1;if ko1>0 then begin stpc(pokp,mpp,pcub1) ;goto 1;end;

end else if pcub2[i9]='0' then cub9[i9]:='1' else cub9[i9]:='0';

end; if kv=ns then goto 1 else

begin for i9:=1 to ns do begin cub99:=' ';cub99:=pcub1;

if cub9[i9]<>'v' then begin cub99[i9]:=cub9[i9];

stpc(pokp,mpp,cub99);end;end; end; 1:end;

 

{17 - звездчатое произведение кубов }

procedure zpc(pcub1,pcub2:cu;var pcub:cu;var pzp:integer);

var i10,ky:integer; label 1;

begin ky:=0;pzp:=0;pcub:=' ';

for i10:=1 to ns do begin if pcub1[i10]=pcub2[i10] then

pcub[i10]:=pcub1[i10] else if pcub2[i10]='X'then pcub[i10]:=

pcub1[i10] else if pcub1[i10]='X' then pcub[i10]:=pcub2[i10]

else begin pcub[i10]:='X';ky:=ky+1;if ky>1

then begin pzp:=1;goto 1;end;end;end; 1: end;

 

{18 определение стоимости куба }

procedure osc(pcub:cu);

var i14:integer; begin sc:=0;

for i14:=1 to ns do if pcub[i14]<>'X' then sc:=sc+1;nx:=ns-sc;end;

 

{19 - oпределение стоимости покрытия }

procedure osp(pokp:pok;mpp:integer;pst:st);

var i15:integer;cub15:cu; begin sp:=0;

for i15:=1 to mpp do begin cub15:=' ';

cub15:=pokp[i15];osc(cub15); sp:=sp+sc;

if sc>1 then sp:=sp+1;end;if (mpp=1) and (sc>1) then sp:=sp-1;

writeln(lst,'sp',pst,sp); end;

{20 - печать покрытия , его стоимости}

procedure pecp(pokp:pok;mpp,nsp:integer;pst:st);

var i16:integer; begin

writeln(lst);writeln(lst,'покрытие',pst); for i16:=1 to mpp do

pecc(pokp[i16]); osp(pokp, mpp,pst) ; end;

 

{21 - oпределение вхождения куба в куб }

procedure vxgc(pcub1,pcub2:cu);

label 1; var i17:integer;

begin for i17:=1 to ns do if (pcub1[i17]=pcub2[i17]) or

(pcub2[i17] ='X') then pvx:= 1 else begin pvx:=0 ; goto 1;end;

1: end;

 

{22 - сжатие покрытия }

procedure sgp(var pokp:pok;var mpp:integer);

label 1; var i18,j18,k18:integer;

begin 1: for i18:=1 to mpp do for j18:=1 to mpp do if i18<>j18

then begin vxgc(pokp[i18],pokp[j18]);if pvx=1 then begin for

k18:=i18 to mpp do begin pokp[k18]:=' '; pokp[k18]:=

pokp[k18+1];end;mpp:=mpp- 1;goto 1;end; end; end;

 

{23 - пересечение покрытий }

procedure perpp(pokp1,pokp2:pok;mpp1,mpp2:integer;var pokp:pok;

var mpp:integer);

var i8,j8:integer;cub8:cu; begin mpp:=0;

for i8:=1 to mpp1 do for j8:=1 to mpp2 do begin perc(pokp1[i8],

pokp2[j8],cub8);if pperc =0 then begin stpc(pokp,mpp,cub8);

sgp(pokp,mpp);end; end;end;

 

{24 - сжатие покрытия засчет другого покрытмя }

procedure sgpp(var pokp:pok;var mpp:integer;pokp1:pok;mpp1:integer);

label 1; var i19,j19,k19:integer;

begin 1:for i19:=1 to mpp do for j19:=1 to mpp1 do begin

vxgc(pokp[i19],pokp1[j19]);if pvx=1 then begin for k19:=i19 to

mpp do pokp[k19]:=pokp[k19+1]; mpp:=mpp-1;goto 1;end;end; end;

 

{25 - поиск простых импликант }

procedure ppi(pokc1:pok;mpc1:integer;var pokz:pok;var mpz:integer);

label 1,2; var pokd:pok;pcub20:cu;i20,j20,mpd,pzp:integer;

begin nc:=1; mpz:=0;

2:mpd:=0;sgp(pokc1,mpc1);for i20:=1 to mpc1-1 do begin for j20:=

i20+1 to mpc1 do begin zpc(pokc1[i20],pokc1[j20],pcub20,pzp);

if pzp=0 then begin

osc(pcub20);if nx>=nc then stpc(pokd,mpd,pcub20);end;end;end;

if mpd=0 then goto 1 else sgp(pokd,mpd);

sgpp(pokd,mpd,pokc1,mpc1);

if mpd=0 then goto 1;sgpp(pokc1,mpc1,pokd,mpd);

stpp(pokc1,mpc1,pokd,mpd);nc:=nc+1;goto 2;

1:stpp(pokz,mpz,pokc1,mpc1);end;

 

{26 - вычитание покрытий }

procedure vipp(pokp1,pokp2:pok;mpp1,mpp2:integer;var pokp:pok;

var mpp:integer);

label 1,2,3; var pokv1,pokv2,pokv3:pok;mpv1,mpv2,mpv3,i12,j12,

k12:integer;

begin

mpp:=0; if (mpp1=0) or (pokp2[1]='XXXXXXXXXX') then goto 2 else

if mpp2=0 then begin stpc(pokp,mpp,'XXXXXXXXXX'); goto 2;end;

for i12:=1 to mpp1 do begin mpv1:=0;stpc(pokv1,mpv1,pokp1[i12]);

for j12:=1 to mpp2 do begin mpv3:=0;for k12:=1 to mpv1 do begin

vicc(pokv1[k12],pokp2[j12],pokv2,mpv2); if mpv2=0 then goto 3;

stpp(pokv3,mpv3,pokv2,mpv2);

sgp(pokv3,mpv3);

3: end;if mpv3=0 then goto 1 else mpv1:=0;

stpp(pokv1,mpv1,pokv3,mpv3);end;

stpp(pokp,mpp,pokv3,mpv3);sgp(pokp,mpp);1: end; 2: end;

 

{27 - проверка равенства покрытий }

procedure ravp(pokp1,pokp2:pok;mpp1,mpp2:integer);

var pok26,pok62:pok;mp26,mp62:integer;

begin vipp(pokp1,pokp2,mpp1,mpp2,pok26,mp26);

vipp(pokp2,pokp1,mpp2,mpp1,pok62,mp62);writeln(lst);

if(mp26=0) and (mp62=0) then write(lst,'равны') else

write(lst,'не равны'); end;

 

{28 - проверка отношения между покрытиями }

procedure otp(pokp1,pokp2:pok;mpp1,mpp2:integer);

var pok27,pok72,pok272:pok;mp27,mp72,mp272:integer;

begin vipp(pokp1,pokp2,mpp1,mpp2,pok27,mp27);

vipp(pokp2,pokp1,mpp2,mpp1,pok72,mp72);

perpp(pokp1,pokp2,mpp1,mpp2,pok272,mp272);writeln(lst);

if(mp27=0) and (mp72=0) then write(lst,'равны ') else if

mp27=0 then write(lst,' лч < пч') else if mp72=0 then

write(lst,'лч > пч') else if mp272=0 then write(lst,

'общее отношение ') else write(lst,'нет общего '); end;

 

{29 - объединение кубов}

procedure obc(pcub1,pcub2:cu;var pokp:pok;var mpp:integer);

var pok28:pok;mp28:integer;

begin mpp:=0;mp28:=0;stpc(pok28,mp28,pcub1);

stpc(pok28,mp28,pcub2);ppi(pok28,mp28,pokp,mpp); end;

 

{30 - дополнение покрытия}

procedure dopp(pokp1:pok;mpp1:integer;var pokp:pok;var mpp

:integer);

var pokun:pok;mpun:integer; label 1;

begin

mpp:=0;if mpp1=0 then begin mpp:=1; pokp[mpp]:='XXXXXXXXXX';

goto 1;end else if pokp1[1]='XXXXXXXXXX' then goto 1;mpun:=1;

pokun[mpun]:='XXXXXXXXXX';

vipp(pokun,pokp1,mpun,mpp1,pokp,mpp); 1: end;

 

{31 - объединение покрытий}

procedure obp(pokp1,pokp2:pok;mpp1,mpp2:integer;

var pokp:pok; var mpp:integer);

var pok30,pok31:pok;mp30,mp31,i:integer;

begin

mp30:=0;stpp(pok30,mp30,pokp1,mpp1);

stpp(pok30,mp30,pokp2,mpp2);dopp(pok30,mp30,pok31,mp31);

dopp(pok31,mp31,pokp,mpp); end;

 

{ операции над автоматами }

 

{ 32 - опаределение пустоты мса }

procedure pusсa(mcap1,mcap2,mcap3,mcap4:mca;myp:integer);

label 1,2; var i,j,k:integer;

begin prpusca:=0;

for i:=1 to myp do begin for j:=1 to myp do

if(mcap1[i,j]=' ') and (mcap2[i,j]=' ') {and

(mcap3[i,j]=' ') and (mcap4[i,j]=' ')} then goto 1

else begin prpusca:=1; writeln (lst,'mca непуста'); goto 2; end;1: end;

writeln(lst,'mca пуста'); 2:end;

 

{ 33 - обнуление мса }

procedure zakсa0(yp1:mas;myp1:integer;var mcap1,mcap2,mcap3,mcap4:mca;

var yp:mas;var myp:integer);

var i,j,k:integer;

begin zakm(yp1,myp1,yp,myp);

for k:=1 to kk*2 do for i:=1 to myp do for j:=1 to myp

do begin if k=1 then mcap1[i,j]:=' 'else if k=2

then mcap2[i,j]:=' ' else if k=3 then mcap3[i,j]:=' ' else

mcap4[i,j]:=' ';end; end;

 

{ 34 - ‘закачкa' мсар1 в однородную мсар }

procedure zakcao(mcap11,mcap12:mca;yp1:mas;myp1:integer;

var mcap1,mcap2,mcap3,mcap4:mca;var yp:mas;var myp:integer);

var i,j,k:integer;

begin zakm(yp1,myp1,yp,myp);

zakca0(yp1,myp1,mcap1,mcap2,mcap3,mcap4,yp,myp);for k:=1 to kk do for i:=1

to myp1 do for j:=1 to myp1 do begin if k=1 then mcap1[i,j]:=

mcap11[i,j] else if k=2 then mcap2[i,j]:=mcap12[i,j] else

mcap3[i,j]:=mcap13[i,j];end; end;

 

{ 35 - ‘закачкa’ мсар1 в неоднородную мсар }

procedure zakcan(yun:mas;myun:integer;mcap11,mcap12,mcap13,mcap14:mca;

yp1:mas;myp1:integer;

var mcap1,mcap2,mcap3,mcap4:mca;var yp:mas;var myp:integer);

var i,pi,j,pj,k:integer; label 1,2;

begin zakca0(yun,myun,mcap1,mcap2,mcap3,mcap4,yp,myp);for k:=1 to kk do

for i:=1 to myp1 do for j:=1 to myp1 do begin pj:=0;pi:=0;1:if

yp1[j+1]<>yp[j+1+pj] then begin pj:=pj+1;goto 1;end;

2:if yp1[i]<>yp[i+pi] then begin pi:=pi+1;goto 2;end; if k=1 then

mcap1[i+pi,j+pj]:=mcap11[i,j]

else if k=2 then mcap2[i+pi,j+pj]:=mcap12[i,j] else

mcap3[i+pi,j+pj]:=mcap13[i,j];end; end;

 

{36 - стыковкa mca }

procedure stca(var mcap1,mcap2,mcap3,mcap4:mca;yp:mas;myp:integer;

mcap11,mcap12,mcap13,mcap14:mca;var kk:integer);

var i,j,k:integer;

begin for k:=1 to kk do for i:=1

to myp do for j:=1 to myp do begin if k=1 then

mcap2[i,j]:=mcap11[i,j]

else if k=2 then mcap3[i,j]:=mcap12[i,j] else

mcap4[i,j]:=mcap13[i,j];end; kk:=kk*2; end;

 

{37 - упрощение мса за счет склеивания }

procedure sgca(var mcap1,mcap2,mcap3,mcap4:mca;myp,kk:integer);

var i,j,k:integer;pokp,pokp1:pok; mpp,mpp1:integer;cub,cubb1:cu;

sim:char;

begin for i:=1 to myp do for j:=1 to myp do begin

cub:=mcap1[i,j];cub1:=mcap2[i,j];sim:=cub[5];if (sim='E')or

(sim='F') or (sim='U') then cub[5]:=' ';

if(cub[1]=cub1[1]) and

(cub[1]<>' ') then begin mpp:=1;pokp[mpp]:=cub;mpp:=2;

pokp[mpp]:=cub1;ppi(pokp,mpp,pokp1,mpp1);if mpp1=1 then begin

mcap1[i,j]:=' ';mcap2[i,j]:=' ';cub:=pokp1[1];

cub[5]:=' ';if cub='XXXX ' then mcap1[i,j]:='1 1 ' else

mcap1[i,j]:=cub;cub:=mcap1[i,j];if (sim='E')or(sim='F') or (sim='U')

then cub[5]:=sim;mcap1[i,j]:=cub;end else for k:=1 to mpp1 do if k=1

then mcap1[i,j]:=pokp1[k] else if k=2 then mcap2[i,j]:=pokp1[2];

end;end; end;

 

{ 38 - проверка равенства автоматов }

procedure rava( mcap1,mcap2,mcap3,mcap4,mcap11,mcap12,mcap13,

mcap14:mca;myp,kk:integer);

var i,j,k:integer; label 1,2;

begin prava:=0; for i:=1

to myp do begin for j:=1 to myp do if (mcap1[i,j]=mcap11[i,j]) and

(mcap2[i,j]=mcap12[i,j]) then goto 1 else begin prava:=1;

writeln(lst,'mca неравны');goto 2 ; end;

1:end;writeln(lst,'мса равны'); 2:end;

 

{39 под-ма печати mpca с признаками }

procedure pecap(mcap1,mcap2,mcap3,mcap4:mca;yp:mas;myp:integer;

pst:st);

var i,j,k,l,l1:integer;cub:cu;

begin writeln(lst);write(lst,'mca',pst,' ');

for i:=1 to myp do write(lst,' y',yp[i]);

for i:=1 to myp do begin writeln(lst);write(lst,' y',yp[i],' ');

for k:=1 to kk do begin for j:=1 to myp do begin if k=1 then

zakc(cub,mcap1[i,j]) else if k=2 then zakc(cub,mcap2[i,j]) else

zakc(cub,mcap3[i,j]); pecc(cub);end; if kk>1 then begin writeln(lst);

write(lst,' ');end;end;end;

end;

 

{40 под-ма печати мса без признаков }

procedure peca(mcap1,mcap2,mcap3,mcap4:mca;yp:mas;myp:integer;

pst:st);

var i,j,k,l,l1:integer;cub:cu;

begin writeln(lst);write(lst,'mca',pst,' ');

for i:=1 to myp do write(lst,' y',yp[i]);

for i:=1 to myp do begin writeln(lst);write(lst,' y',yp[i],' ');

for k:=1 to kk do begin for j:=1 to l do begin if k=1 then

zakc1(cub,mcap1[i,j]) else if k=2 then zakc1(cub,mcap2[i,j]) else

zakc1(cub,mcap3[i,j]); pecc(cub);end; if kk>1 then begin writeln(lst);

write(lst,' ');end;end;end;

end;

 

{41 под-ма ввода мса }

procedure vvod(var mcap1:mca;var mcap2:mca;var mcap3:mca;myp:integer);

var i,j,k,l:integer; label 1;

begin 1:for k:=1 to kk do for i:=1 to myp do begin

readln(f1,sim);for j:=1 to myp do begin if k=1 then

read(f1, mcap1[i,j]) else if k=2 then read(f1,mcap2[i,j])

else read(f1,mcap3[i,j]); end;end;

end;

 

{ 42 под-ма объединения автоматов }

procedure oba(var mcap1,mcap2,mcap3,mcap4:mca;var myp:integer;var yp:mas;

mcap11,mca12,mcap21,mcap22:mca;

yp1:mca;myp1:integer);

var i,j:integer;

begin myp:=0;

for i:=1 to myp do for j:=1 to myp do begin cub:=mcap1[i,j];

if cub<>' ' then begin cub[5]:='0';mcap1[i,j]:=cub;end;

cub:=mcap2[i,j];if cub<>' ' then begin cub[5]:='0';

mcap2[i,j]:=cub;end;end;

for i:=1 to myp do for j:=1 to myp do begin cub:=mcap11[i,j];

if cub<>' ' then begin cub[5]:='1';mcap11[i,j]:=cub;end;

cub:=mcap12[i,j];if cub<>' ' then begin cub[5]:='1';

mcap12[i,j]:=cub;end;end;

staa(mcap1,mcap2,mcap3,mcap4,yp,myp,mcap11,mcap12,mcap13,mcap14,kk);

sga(mcap1,mcap2,mcap3,mcap4,myp,kk);

end;

 

{ 43 под-ма пересечения автоматов }

procedure pera(var mcar1,mcar2:mca;var yp:mas;var myp:integer;

mcap11,mcap12,mcap21,mcap22:mca);

var i,j:integer;

begin

for i:=1 to myp do for j:=1 to myp do begin if mcar1[i,j]<>mcap11[i,j]

then mcar1[i,j]:=' '; end; end;

 

{ 44 под-ма вычитания автоматов }

procedure vica(var mcar1,mcar2:mca;yp:mas;myp:integer;

mcap11,mcap12,mcap21,mcap22:mca);

var i,j:integer;

begin

for i:=1 to myp do for j:=1 to myp do begin if mcar1[i,j]=mcap11[i,j]

then mcar1[i,j]:=' '; end; end;

 

{ 45 под-ма дополнения автомата }

procedure dopca(mcap11:mca;myp1:integer;var mcap1,mcap2:mca;

var myp,kk:integer);

label 1,2,3; var i,j,l:integer;

begin for k:=1 to kk do for i:=1

to myp do for j:=1 to myp do begin cub1:=mcap11[i,j];

if k=1 then cub:=mcau1[i,j] else cub:=mcau2[i,j];

for l:=1 to ns-1 do begin

if cub[l]=cub1[l] then goto 1 else

3:begin if k=1 then mcap1[i,j]:=cub else mcap2[i,j]:=cub;goto 2 end;

1: end;if cub[5]=cub1[5] then begin cub:=' ';goto 3;end else

if cub[5]=' ' then if cub1[5]='0' then cub[5]:='1' else begin

cub[5]:='0';goto 3;end else

if cub1[5]=' ' then begin cub:=' '; goto 3;end else goto 3; 2:end;

end;

 

{Головная программа}

 

begin clrscr; assign(f1,'wca.dat'); reset(f1);

1: writeln(lst);read(f1,nva);if nva=0 then goto 2;

readln(f1,ngr,ns,kk,fam);writeln(lst,fam,st11,ngr);

writeln(lst,' вариант ',nva, ' ns=',ns,' kk=',kk );

read(f1,mya);read(f1,sim);

for i:=1 to mya do read(f1,ya[i]);{pecm(ya,mya,st1);}

vvod(mcaa1,mcaa2,mcaa3,mya);readln(f1,sim);

pecap(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,st1);

read(f1,myb);{peca(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,st1);}

read(f1,sim);for i:=1 to myb do read(f1,yb[i]);

{pecm(yb,myb,st2);}

vvod(mcab1,mcab2,mcab3,myb);readln(f1,sim);

pecap(mcab1,mcab2,mcab3,mcab4,yb,myb,st2);

{peca(mcab1,mcab2,mcab3,mcab4,yb,myb,st2);}

zakan(yu,myu,mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcac1,mcac2,mcac3,mcac4,yc,myc);

{pecap(mcac1,mcac2,mcac3,mcac4,yc,myc,st3);}

zakan(yu,myu,mcab1,mcab2,mcab3,mcab4,yb,myb,mcad1,mcad2,mcad3,mcad4,yd,myd);

{pecap(mcad1,mcad2,mcad3,mcad4,yd,myd,st4);}

{omlv(yc,yd,myc,myd,yf,myf);pecm(yf,myf,st6);}

{omlv(yd,yc,myd,myc,yg,myg);pecm(yg,myg,st7); }

{obm(ya,yb,mya,myb,yu,myu);yporm(yu,myu); pecm(yu,myu,st13);}

{pusa(mcae1,mcae2,mcae3,mcae4,mye);}

{pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);}

zakan(yu,myu,mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcae1,mcae2,mcae3,mcae4,

ye,mye);

pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);

zakan(yu,myu,mcab1,mcab2,mcab3,mcab4,yb,myb,mcaf1,mcaf2,mcaf3,mcaf4,

yf,myf);

pecap(mcaf1,mcaf2,mcaf3,mcaf4,yf,myf,st6); writeln(lst);

rava(mcae1,mcae2,mcae3,mcae4,mcaf1,mcaf2,mcaf3,mcaf4,myf,kk);

zakan(yu,myu,mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcag1,mcag2,mcag3,mcag4,

yg,myg);

{rava(mcag1,mcag2,mcag3,mcag4,mcae1,mcae2,mcae3,mcae4,myg,kk);}

{staa(mcae1,mcae2,mcae3,mcae4,ye,mye,mcaf1,mcaf2,mcaf3,mcaf4,kk);}

{pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);

sga(mcae1,mcae2,mcae3,mcae4,mye,kk);

writeln(lst);writeln(lst,'упрощение автомата на основе тождеств');

pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);

ypa(mcae1,mcae2,mcae3,mcae4,mye,kk);

writeln(lst);writeln(lst,'упр-е авт-а на основе неиз-ти лу-й');

pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5);}

pusa(mcae1,mcae2,mcae3,mcae4,mye);

oba(mcac1,mcac2,mcac3,mcac4,yc,myc,mcaf1,mcaf2,mcaf3,mcaf4,kk);

writeln(lst);writeln(lst,'объединение автоматов');

pecap(mcae1,mcae2,mcae3,mcae4,ye,mye,st5); kk:=1;

zakcao(mcaun1,mcaun2,spun,moi,mcac1,mcac2,moc);

pera(mcac1,mcac2,mcac3,mcac4,yc,myc,mcad1,mcad2,mcad3,mcad4);

writeln(lst);writeln(lst,'пересечение автоматов');

pecap(mcac1,mcac2,mcac3,mcac4,yc,myc,st3);

zakao(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcal1,mcal2,mcal3,mcal4,

yl,myl);

zakao(mcab1,mcab2,mcab3,mcab4,yb,myb,mcah1,mcah2,mcah3,mcah4,

yh,myh);

pecap(mcal1,mcal2,mcal3,mcal4,yl,myl,st14);

pecap(mcah1,mcah2,mcah3,mcah4,yh,myh,st8);

vica(mcal1,mcal2,mcal3,mcal4,yl,myl,mcah1,mcah2,mcah3,mcah4);

writeln(lst);writeln(lst,'прямая разность автоматов');

pecap(mcal1,mcal2,mcal3,mcal4,yl,myl,st14);

{zakao(mcaa1,mcaa2,mcaa3,mcaa4,ya,mya,mcal1,mcal2,mcal3,mcal4,

yl,myl);

zakao(mcab1,mcab2,mcab3,mcab4,yb,myb,mcah1,mcah2,mcah3,mcah4,

yh,myh);

pecap(mcal1,mcal2,mcal3,mcal4,yl,myl,st14);

pecap(mcah1,mcah2,mcah3,mcah4,yh,myh,st8);

vica(mcah1,mcah2,mcah3,mcah4,mcal1,mcal2,mcal3,mcal4,yh,myh,kk);

writeln(lst);writeln(lst,'обратная разность автоматов');

pecap(mcah1,mcah2,mcah3,mcah4,yh,myh,st8);

goto 1;

2:write(lst,' end');writeln(lst);

close(f1); end.

 

ПРИЛОЖЕНИЕ 2. КОНТРОЛЬНЫЕ ВОПРОСЫ КУРСА

“ТЕОРИЯ ВТОМАТОВ”………………………..

1.Автомат, цифровой автомат (ЦА), состояние и автоматное время.

2. Цель и задачи теории автоматов.

3. Значение теории автоматов.

4. Краткая история автоматов, теории автоматов.

5. Структура ЦА, обозначения и изображения.

6. Классификация ЦА по закону функционирования (ЗФ). Связь между ЦА Мили и Мура.

7. Классификация ЦА по различным критериям за исключением ЗФ.

8. Автоматные и логические сети.

9 Автоматные грамотность и культура.

10. Теории автоматов, сущность синтеза и анализа в них.

11. Свойства и характеристики ЦА.

12. Классификация языков описания ЦА.

13. ГСА содержательные и закодированные.

14. МСА. Условия корректности.

15. ФМП содержательные и закодированные Условия корректности.

16. СФП. Условия корректности.

17. ТП, ТВ и СТП и В. Условия корректности.

18. ТП, ОТП. Условия корректности.

19. МП, СМП и В. Условия корректности.

20. МП и ОМП. Условия корректности.

21. ГА Мили. Условия корректности.

22. ГА Мура. Условия корректности.

23. Классификация вершин графов. Условия их выявления на М и Т.

24. М, Т, Г ЦА Мили на R, S – триггере.

25. М, Т, Г ЦА Мура на триггере со счетным входом.

26. М, Т и ГА счетчика с N=3.

27. Диаграммы работы ЦА Мили.

28. Диаграммы работы ЦА Мура.

29. Связь между ЦА на графах.

30. ПОС автоматов.

31. ПАРС автоматов.

32. СОС автоматов.

33. Разбиение автомата на графе. Корректность разбиения автомата.

34. Разбиение автомата в Т и М. Корректность разбиения автомата.

35. Покрытие автомата. Проверка покрытия.

36. Объединение автоматов по Т, М и Г.

37. Пересечение автоматов по Т, М и Г.

38. Прямая разность автоматов по Т, М и Г.

39. Обратная разность автоматов по Т, М и Г.

40. Симметрическая разность автоматов по Т, М и Г.

41. Дополнение автомата по Т, М и Г.

42. Отношение между автоматами.

43. Равенство автоматов.

44. Упрощение автомата.

45. Элементарные конструкции Ф - языка.

46. Микрооперации (МО) инверсии, установки, передачи.

47. Микрооперации (МО) счета, сравнения, составления.

48. МО группы сложения.

49. МО группы сдвига.

50. Комбинированные МО.

51. Двоичные выражения(ДВ), простое ДВ. Порядок выполнения МО.

52. ДВ условные. Порядок вычисления отношений, МО.

53. Тождества(Т) для отдельных операций.

54. Т склеиваеия (ТСК).

55. Т поглощения (ТПОГ).

56. Т Порецкого (ТПОР).

57. Т де Моргана (ТДМ).

58. Т для общего “множителя” и “слjгаемого” совершенного ранга.

59. Автоматы устройства обработки цифровой информации с микропро-грамным управлением.

60. Операционные автоматы.

61. Управляющие ЦА (УЦА) с ЖЛ.

62. УЦА с ПЛ.

63. Этапы синтеза УЦА. Структура автомата.

64. Отметки ГСА для ЦА Мили.

65. Отметки ГСА для ЦА Мура.

66. Синтез средней части УЦА Мили.

67. Синтез средней части УЦА Мура.

68. Синтез выходной части УЦА Мили.

69. Синтез выходной части УЦА Мура.

70. Синтез входной части УЦА Мили.

71. Синтез входной части УЦА Мура.

72. Задача, этапы и методы синтеза логических схем (СЛС). СЛС при n=1.

73. СЛС при n=1 классическим методом.

74. СЛС при оптимальном доопределении на основе перебора.

75. СЛС при оптимальном доопределении специальным методом.

76. СЛС при нулевой связи (НС).

77. СЛС при слабой связи (СЛС).

78. СЛС при средней связи (СРС) на примере DC.

79. СЛС при средней связи.

80. СЛС при сильной связи (СИС).

81. Задачи, этапы и методы анализа логических схем (АЛС). АЛС при n=1.

82. АЛС при n = 2.

83. Отказы, сбои и неисправности. Реакция на них.

84. Виды избыточности, вес комбинации, кодовое расстояние.

85. Условия возможности контроля(К) и диагностирования (Д).

86. К и Д передач. Схема К и Д.

87. К дизъюнкции, схема контроля.

88. К конъюнкции, схема контроля.

89. К сложения по модулю 2, схема контроля.

90. К инверсии, схема контроля.

91. К эквивалентности, схема контроля.

92. К импликации, схема контроля.

93. К коимпликации, схема контроля.

94. К операции Шеффера, схема контроля.

95. К операции Пирса, схема контроля.

96. К сложения, схема контроля.

97. К вычитания, схема контроля.

98. К умножения, схема контроля.

99. К деления, схема контроля.

 

 

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ ……………………………………………………..…………   1. ОБЩИЕ СВЕДЕНИЯ О ЦИФРОВЫХ АВТОМАТАХ ….....……….…... 1.1. Основные определения. Обозначения. Изображения……………….. 1.2. Способы описания и построения автоматов …………………………. 1.3. Об операциях над автоматами, о законах и тождествах алгебры автоматов………………………………………………..…….. 1.4. Цифровые автоматы 1-го и 2-го рода, автоматы Мили и Мура…….. 1.5. Классификация автоматов ……………………………………….. .….. 1.6. Свойства и характеристики автоматов………………………………. 1.7. Автоматы, выполняющие роль 0 и 1 в алгебре автоматов. С-автомат …………………………………………………..………….... 1.8. Равенство, эквивалентность, изоморфизм автоматов ..……………… 1.9. Автоматные грамотность и культура…………………………………. 1.10. Значение теории автоматов в науке, технике и обществе …………... 1.11. Краткая историческая справка о зарождении и развитии автоматов. Виды теорий автоматов ……………………….   2. СПОСОБЫ ЗАДАНИЯ (ОПИСАНИЯ) ЦИФРОВЫХ АВТОМАТОВ ……………………………………………. 2.1. Начальные языки………………………………………………………... 2.1.1. Графическая схема алгоритма.………………………………………. 2.1.2. Матричная схема алгоритма…………………………………………. 2.1.3. Функциональная микропрограмма………………………………….. 2.1.4. Система формул переходов………………………………………….. 2.2. Автоматные языки………………………………………………………. 2.2.1. Таблицы переходов, выходов……………………………………….. 2.2.2. Матрицы переходов, выходов…………………………………….…. 2.2.3. Графы автоматов………………………………………………………   3. ОПЕРАЦИИ НАД ЦИФРОВЫМИ АВТОМАТАМИ …………………... 3.1. Операции декомпозиции……………………………………………….. 3.1.1. Разбиение. Покрытие ………………………………………………… 3.1.2. Проверка разбиения, покрытия ……………………………………... 3.2. Операции композиции………………………………………………….. 3.2.1. Последовательное соединение………………………………………. 3.2.2. Параллельное соединение…………………………………………… 3.2.3. Соединение с обратной связью ……………………………………... 3.3. Алгебраические операции……………………………………………… 3.3.1. Объединение частей автомата………………………………………. 3.3.2. Настраиваемое объединение…………………………………………   3.3.3. Пересечение автоматов…………………………………………….. 3.3.3. Вычитание……………………………………………………………. 3.3.4. Симметрическая разность…………………………………………. 3.3.5. Дополнение………………………………………………………….. 3.4. Операции проверки отношения……………………………………….. 3.4.1. Проверка отношения……………………………………………….. 3.4.2. Проверка равенства…………………………………………………. 3.5. Операции упрощения цифрового автомата…………………………… 3.5.1. Упрощение цифрового автомата за счет упрощения алгоритма. … 3.5.2. Упрощение цифрового автомата за счет тождеств ………………..   4. ЗАКОНЫ И ТОЖДЕСТВА АЛГЕБРЫ АВТОМАТОВ….…………….. 4.1. Законы…………………………………………………………………… 4.1.1. Переместительный закон…………………………………………… 4.1.2. Сочетательный закон……………………………………………….. 4.1.3. Распределительный закон………………………………………….. 4.2. Тождества………………………………………………………………. 4.2.1. Тождества отдельных операций …………………………………… 4.2.2. Тождества склеивания ……………………………………………… 4.2.3. Тождества поглощения……………………………………………… 4.2.4. Тождества Порецкого …………………………………………….. 4.2.5. Тождества де Моргана …………………………………………….. 4.2.6. Тождества для общих “множителя” и “слагаемого” совершенного ранга (тождества Триханова)………………………   5. ВОПРОСЫ СИНТЕЗА И АНАЛИЗА ЛОГИЧЕС КИХ СХЕМ………… 5.1. Синтез логических схем……..………………………………………… 5.1.1. Синтез схем с одним выходом с соптимальным доопределением…………………………………………………….. 5.1.2. Синтез схем с двумя выходами с средней степенью связи.……… 5.1.3. Синтез схем с двумя выходами с сильной степенью связи……… 5.2. Анализ логических схем……………………………………………….. 5.2.1. Анализ логических схем с одним выходом…………..……….…… 5.2.2. Анализ логических схем с двумя выходами………………….……   6. АВТОМАТЫ УСТРОЙСТВА ОБРАБОТКИ ЦИФРОВОЙ ИНФОРМАЦИИ. СИНТЕЗ УПРАВЛЯЮЩЕГО АВТОМАТА С ЖЕСТКОЙ ЛОГИКОЙ…..……………………………………….…….. 6.1. Структура устройства обработки цифровой информации по В.М.Глушкову………………………………………… 6.2. Операционные автоматы ………………………………………………. 6.3. Управляющие автоматы ………………………………………………..   6.3.1. Управляющие автоматы с жесткой логи……………………………. 6.3.2. Управляющие автоматы с программируемой логикой…………… 6.4. Синтез управляющего автомата с жёсткой логикой…………………. 6.4.1. Этапы синтеза…………………………………………………………. 6.4.1.1. Задание условий работы автомата ………………………………. 6.4.1.2. Отметки граф - схемы алгоритма ……………………………….. 6.4.1.3. Графы автоматов …………………………………………………. 6.4.1.4. Cинтез запоминающей части ……………………………………. 6.4.1.5. Синтез выходной части…………………………………………… 6.4.1.6. Синтез входной части……………………………………………..   7. КОНТРОЛЬ И ДИАГНОСТИРОВАНИЕ РАБОТЫ ЦИФРОВЫХ АВТОМАТОВ…………………………………………….. 7.1. Контроль логических операций……………………………………….. 7.2. Контроль арифметических операций…..………………………….…. 7.3. Контроль и диагностирование передач информации…………… …..   8. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕОБРАЗОВАНИЯ ЦИФРОВЫХ АВТОМАТОВ…………………………………………….. 8.1. Подпрограммы алгебраических операций…………………………… 8.1.1. Подпрограмма настраиваемого объединения…………………….. 8.1.2. Подпрограмма пересечения ………..……………………………… 8.1.3. Подпрограмма вычитания………………………………………….. 8.1.4. Подпрограмма симметрической разности…………………………. 8.1.5. Подпрограмма дополнения…………………………………………. 8.2. Подпрограммы операций проверки отношения……………………… 8.2.1. Подпрограмма проверки отношения………………………………. 8.2.2. Подпрограмма проверки равенства………………….…………….. 8.3. Подпрограммы вспомогательных операций ………………………… 8.3.1. Подпрограмма ввода…………………………………….…………. 8.3.2. Подпрограмма вывода с признаками……………………………… 8.3.3. Подпрограмма вывода без признаков……………………………… 8.3.4. Подпрограмма обнуления мса……………………………………… 8.3.5. Подпрограмма определения пустоты мса………………………… 8.3.6. Подпрограмма 'закачки' мсар1 в однородную мса……………….. 8.3.7. Подпрограмма 'закачки' мсар1 в неоднородную мса……………..   ЗАКЛЮЧЕНИЕ……………………………………………………………   ЛИТЕРАТУРА…………………………………………………………….   ПРИЛОЖЕНИЕ 1. ПОДПРОГРАММЫ РЕАЛИЗАЦИИ ОПЕРАЦИЙ.НАД ЦИФРОВЫМИ АВТОМАТАМИ……..………………………………... ПРИЛОЖЕНИЕ 2. КОНТРОЛЬНЫЕ ВОПРОСЫ КУРСА “ТЕОРИЯ АВТОМАТОВ”………………………………                                                  

 


<== предыдущая страница | следующая страница ==>
ЗАКЛЮЧЕНИЕ. В данном учвебном пособии изложены основы прикладной теории автоматов применительно к компьютерам | Проблематика антикризисного управления

Дата добавления: 2015-07-26; просмотров: 168; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.033 сек.