environ.scs

来自「Pascal Programs Printed in GENETIC ALGOR」· SCS 代码 · 共 97 行

SCS
97
字号
{ environ.scs: multiplexer environment }{ environment declarations }type  erecord=record               laddress, ldata, lsignal, address, output,                classifieroutput:integer;               signal:message;              end;var   environrec:erecord;      efile:text;procedure generatesignal(var environrec:erecord);{ generate random signal }var j:integer;begin with environrec do for j := 1 to lsignal do   if flip(0.5) then signal[j] := 1    else signal[j] := 0end;function decode(var mess:message; start, length:integer):integer;{ decode substring as unsigned binary integer }var j, accum, powerof2:integer;begin accum := 0; powerof2 := 1; for j := start to start+length-1 do begin   accum := accum + powerof2*mess[j];   powerof2 := powerof2 * 2;  end; decode := accumend;procedure multiplexeroutput(var environrec:erecord);{ calculate correct multiplexer output }var j:integer;begin with environrec do begin{ decode the address } address := decode(signal,1,laddress);{ set the output } output := signal[laddress + address + 1]end end;procedure environment(var environrec:erecord);{ coordinate multiplexer calculations }begin generatesignal(environrec); multiplexeroutput(environrec);end;procedure initenvironment(var efile:text; var environrec:erecord);{ initialize the multiplexer environement }var j:integer;begin with environrec do begin readln(efile, laddress);                  { read number of address lines } ldata   := round(poweri(2.0, laddress));  { calculate number of data lines } lsignal := laddress + ldata;              { calculate length of signal } address := 0;                             { zero out multiplexer } output  := 0; classifieroutput := 0; for j := 1 to lsignal do signal[j] := 0;end end;procedure initrepenvironment(var rep:text; var environrec:erecord);{ write initial environmental report }begin with environrec do begin  writeln(rep);  writeln(rep, 'Environmental Parameters (Multiplexer)');  writeln(rep, '--------------------------------------');  writeln(rep, 'Number of address lines  = ', laddress:8);  writeln(rep, 'Number of data lines     = ', ldata:8);  writeln(rep, 'Total number of lines    = ', lsignal:8);end end;procedure writesignal(var rep:text; var signal:message; lsignal:integer);{ write a signal in bit-reverse order }var j:integer;begin for j := lsignal downto 1 do  write(rep,signal[j]:1)end;procedure reportenvironment(var rep:text; var environrec:erecord);{ write current multiplexer info }begin with environrec do begin writeln(rep); writeln(rep,'Current Multiplexer Status'); writeln(rep,'--------------------------');   write(rep,'Signal                =   ');   writesignal(rep,signal,lsignal); writeln(rep); writeln(rep,'Decoded address       = ', address:8); writeln(rep,'Multiplexer output    = ', output:8); writeln(rep,'Classifier  output    = ', classifieroutput:8);end end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?