Реферат: Циклические коды

--PAGE_BREAK--
§ 5. Разработка схемы алгоритма

<img width=«105» height=«31» src=«ref-1_1953115752-227.coolpic» v:shapes="_x0000_s1027"><img width=«105» height=«31» src=«ref-1_1953115979-223.coolpic» v:shapes="_x0000_s1026">

Ciclic code

<img width=«291» height=«328» src=«ref-1_1953116202-1464.coolpic» v:shapes="_x0000_s1031 _x0000_s1032 _x0000_s1033 _x0000_s1039 _x0000_s1044 _x0000_s1061 _x0000_s1069 _x0000_s1076 _x0000_s1124 _x0000_s1126"> <img width=«2» height=«51» src=«ref-1_1953117666-77.coolpic» v:shapes="_x0000_s1081 _x0000_s1123">



<img width=«100» height=«60» src=«ref-1_1953117743-426.coolpic» v:shapes="_x0000_s1048 _x0000_s1049 _x0000_s1050">                                                                          нет  

<img width=«69» height=«2» src=«ref-1_1953114894-78.coolpic» v:shapes="_x0000_s1109"><img width=«2» height=«79» src=«ref-1_1953118247-86.coolpic» v:shapes="_x0000_s1111"><img width=«70» height=«2» src=«ref-1_1953114496-78.coolpic» v:shapes="_x0000_s1106">                                      
                                                                 да    
<img width=«110» height=«42» src=«ref-1_1953118411-336.coolpic» v:shapes="_x0000_s1085 _x0000_s1086 _x0000_s1087"> <img width=«110» height=«68» src=«ref-1_1953118747-547.coolpic» v:shapes="_x0000_s1091 _x0000_s1092 _x0000_s1093 _x0000_s1112"> <img width=«110» height=«43» src=«ref-1_1953119294-294.coolpic» v:shapes="_x0000_s1096 _x0000_s1097 _x0000_s1098">



<img width=«2» height=«214» src=«ref-1_1953119588-84.coolpic» v:shapes="_x0000_s1125"><img width=«50» height=«3» src=«ref-1_1953119672-77.coolpic» v:shapes="_x0000_s1121"><img width=«79» height=«3» src=«ref-1_1953119749-78.coolpic» v:shapes="_x0000_s1122"><img width=«79» height=«3» src=«ref-1_1953111742-78.coolpic» v:shapes="_x0000_s1120"><img width=«2» height=«51» src=«ref-1_1953117666-77.coolpic» v:shapes="_x0000_s1119"><img width=«100» height=«60» src=«ref-1_1953119982-414.coolpic» v:shapes="_x0000_s1116 _x0000_s1117 _x0000_s1118"><img width=«2» height=«50» src=«ref-1_1953120396-77.coolpic» v:shapes="_x0000_s1113"><img width=«98» height=«2» src=«ref-1_1953111586-79.coolpic» v:shapes="_x0000_s1115"><img width=«79» height=«2» src=«ref-1_1953120552-78.coolpic» v:shapes="_x0000_s1114"><img width=«110» height=«42» src=«ref-1_1953120630-301.coolpic» v:shapes="_x0000_s1102 _x0000_s1103 _x0000_s1104">                                                                                                                      

                                                                                                                              

                                                                                                                      

                                                                                                                     

                                                                                                                          

                                                                                                                   

                                                                                                                     

                                                                                                                   

                                                                                                                     

                                                                                                                        

                                                                                                                     

                                                                            нет                                    

                                                                                                                        

                                                                   да                                                                             

                                                                                                                                                                             

                                                                                                           

                                                           Конец 
§ 6. Разработка текста программы
     Для представления информационного слова в памяти используется

 массив. В состав программы входит основная программа и два модуля,

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

Program Cyclic_Code;

Uses

    Crt,_CC31,_Serv;

Var

            m,mm:Move_code;

            p:Polinom;

            r:Rest;

            i,Mainflag,From,Error:integer;

            Switch:byte;

            Key:boolean;

begin

Repeat

     Key:=true;

     TextColor(11);

     TextBackGround(7);

     Clrscr;

     SetWindow(24,10,45,14,2,' Главное меню ');

     Switch:=GetMainMenuChoice;

     case Switch of

              1:begin

                  About;

                  Readln;

                  Key:=False;

                end;

              2: begin

                   TextColor(0);

                   ClrScr;

                   SetWindow(25,10,40,13,1,' Образовать ');

                   Switch:=GetSubMenuChoice;

                   case Switch of

                            1:begin

                                   TextBackGround(0);

                                   TextColor(15);

                                   ClrScr;

                                   SetWindow(1,1,79,24,2,' Демонстрация');

                                   TextColor(14);

                                  
                            

                              GotoXY(2,2);

                                   Init(m,p,r,MainFlag);

                                   Write(‘Информационный полином           ');

                                   TextColor(2);

                                   for i:=n downto 0 do

                                   begin

                                     if(i<n-n1+1)then Textcolor(9);

                                     Write(m[i]);

                                   end;

                                   TextColor(14);

                                   GotoXY(2,3);

                                   Write('Образующий полином                ');

                                   TextColor(13);

                                   for i:=n1 downto 0 do

                                   Write(p[i]);

                                   TextColor(14);

                                   GotoXY(2,4);

                                   Write('Сложение по модулю 2 (F(x)+P(x)): ');

                                   FxPx(m);

                                   TextColor(9);

                                   for i:=n downto 0 do

                                   begin

                                     if(i<n1)then TextColor(2);

                                     Write(m[i]);

                                   end;

                                   TextColor(14);

                                   GotoXY(2,5);

                                   Write('Остаток:                          ');

                                   Divizion(m,r,p,Mainflag);

                                   TextColor(11);

                                   for i:=n1 downto Mainflag do

                                     Write(r[i]);

                                   GotoXY(2,6);

                                    TextColor(14);

                                   Write('Передаваемый полином:             ');

                                   BildMoveCode(m,r,Mainflag);

                                   TextColor(9);

                                   for i:=n downto 0 do

                                   begin

                                     if(i<n1) then TextColor(11);

                                     Write(m[i]);

                                   end;

                                   GotoXY(2,7);

                                   TextColor(14);

                                   Write('Произошла ошибка...               ');

                                  
                                  

                                   MakeError(m,Error);

                                   TextColor(9);

                                   for i:=n downto 0 do

                                   begin

                                     if(i=Error)then

                                       TextColor(12)

                                     else

                                       TextColor(9);

                                     write(m[i]);

                                   end;

                                   GotoXY(2,8);

                                   TextColor(14);

                                   Write('Ошибка исправлена!                ');

                                   TextColor(9);

                                   Correction(m,p,r);

                                   for i:=n downto 0 do

                                   begin

                                       if(i=Error)then

                                       TextColor(10)

                                     else

                                       TextColor(9);

                                     write(m[i]);

                                    end;

                                    TextColor(14);

                                    GotoXY(2,9);

                                    Write('Исходный полином:                 ');

                                    Decoder(m);

                                    TextColor(2);

                                    for i:=n downto 0 do

                                    begin

                                     if(i<n-n1+1)then Textcolor(9);

                                     Write(m[i]);

                                   end;

                            Key:=false;

                            end;

                            2:begin

                                   TextBackGround(0);

                                   TextColor(15);

                                   ClrScr;

                                   SetWindow(1,1,79,24,2,'Демонстрация');

                                   TextColor(14);

                                   GotoXY(2,2);

                                   Init(m,p,r,MainFlag);

                                   Write('Информационный полином:           ');

                                   TextColor(2);

                                   for i:=n downto 0 do

                                  
                                   begin

                                     if(i<n-n1+1)then Textcolor(9);

                                     Write(m[i]);

                                   end;

                                   TextColor(14);

                                   GotoXY(2,3);

                                   Write('Образующий полином:               ');

                                   TextColor(13);

                                   for i:=n1 downto 0 do

                                   Write(p[i]);

                                   TextColor(14);

                                   GotoXY(2,4);

                                   Write('Результат умножения:              ');

                                   BildMoveCodeMultiplication(m);

                                   TextColor(9);

                                   for i:=n downto 0 do

                                     Write(m[i]);

                                   GotoXY(2,5);

                                   TextColor(14);

                                   Write('Произошла ошибка ...               ');

                                   MakeError(m,Error);

                                   TextColor(9);

                                   for i:=n downto 0 do

                                   begin

                                     if(i=Error)then

                                       TextColor(12)

                                     else

                                       TextColor(9);

                                     write(m[i]);

                                   end;

                                   GotoXY(2,6);

                                   TextColor(14);

                                   Write('Ошибка исправлена !                ');

                                   TextColor(9);

                                   Correction(m,p,r);

                                   for i:=n downto 0 do

                                   begin

                                       if(i=Error)then

                                       TextColor(10)

                                     else

                                       TextColor(9);

                                     write(m[i]);

                                    end;

                                   Key:=false;

                                   end;

                  end;

               
               

                 TextColor(14);

                 GotoXY(2,22);

                 Write('Нажмите любую клавишу...');

                 Readln;

              end;

              3:begin

                  ClrScr;

                  GotoXY(1,24);

                  TextColor(14);

                  Writeln('Работа программы завершена ...');

                  Readln;

                  TextBackGround(0);

                  TextColor(15);

                  ClrScr;

                  Key:=true;

                end;

       end;

 Until Key;

end.
§ 7.Результаты работы программы
Результат работы программы при образовании кода добавлением остатка
Демонстрация

 Информационный полином:            0000011010111110011110110110110           

 Образующий полином:                     111101     

Cложениe по модулю 2 (F(x)+P(x)): 1101011111001111011011011000000            

 Остаток:                                             010101

 Передаваемый полином:                  1101011111001111011011011010101           

 Произошла ошибка...                       1101011111001110011011011010101           

 Ошибка исправлена!                         1101011111001111011011011010101           

 Исходный полином:                          0000011010111110011110110110110           
Нажмите любую клавишу...                                                    

                                                                            

Результат работы при образовании кода умножением
Демонстрация

 Информационный полином:           0000001010110000011111010001011           

 Образующий полином:                   111101                                    

 Результат умножения:                     0110000011111010000100100101111           

 Произошла ошибка...                     0110000011111010000100100101101           

 Ошибка исправлена!                       0110000011111010000100100101111           
Нажмите любую клавишу...
Выводы:

      Данная программа кодирует сообщения  используя циклический код.

При этом она иммитирует работу канала для передачи информации.

    При возникновении исключительных ситуаций, когда информационное слово по каким-либо причинам раскодировать не удаётся, программа повторяет запрос на пересылку данных, как это делается в реальных ситуациях подобного рода.

     Кроме этого, программа  случайным образом, «при прохождении

информационного слова через канал» допускает в слове однократную ошбку, затем  исправляет ее, декодирует информационное слово и передаёт результат пользователю.     продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике