Практическая работа № 5 Формирование кода с обнаружением ошибок Краткая справка. Разработчики сетей создали две основные стратегии для борьбы с ошибками. Каждый метод основывается на добавлении к передаваемым данным некоторой избыточной информации. В одном случае этой информации должно быть достаточно, чтобы выявить, какие данные должны были прийти. В другом случае избыточной информации должно быть достаточно только для того, чтобы получатель понял, что произошла ошибка (без указания её типа) и запросил повторную передачу. Первая стратегия использует коды, называющиеся корректирующими, или кодами с исправлением ошибок. Вторая - код с обнаружением ошибок. В высоконадёжных каналах, таких как оптоволокно, дешевле использовать код с обнаружением ошибок и просто заново передавать случайные поврежденные блоки. Однако, скажем, беспроводные соединения, в которых может возникать множество ошибок, чаще используют коды с избыточностью, достаточной для того, чтобы приёмник мог определить, какие данные должны были прийти. Это надёжнее, чем полагаться на повторную передачу, которая тоже, возможно, не сможет пройти без ошибок. В данной работе формируется на передающей машине код с обнаружением ошибок. Это код, в котором к данным добавляется один бит чётности таким образом, чтобы количество единиц во всём кодовом слове было чётным. Анализ кода на приёмной машине на предмет обнаружения ошибок рассматривается в практической работе № 6. Задание на практическую работу По разработанной программе «Формирование кода чётности» вывести на экран и записать в тетрадь заданные символы, их коды в 10сс, а также в 2сс с присоединёнными к ним битами чётности. В качестве исходных данных может быть слово на русском или английском языке. В тетрадь записать также основные положения из Краткой справки данной работы, а также основные переменные. Переменные s$ заданное слово (англ. или рус.); ds длина слова s$; a$ строковая константа для формирования байта; i счётчик цикла от 1 до ds; c(i) код в 10сс i-й буквы слова s$; р счётчик – сколько слева нулей необходимо добавить к коду в 2 сс; b$ строка числа в 2 сс без нулей в старших разрядах; d рабочая ячейка (число в 10 сс, для деления его на 2 для получения 2 сс); b остаток от деления числа в 10 сс на 2; c$ d$ ib строка числа без знака; байт – строка числа в 2 сс с нулями в старших разрядах; избыточный байт для формирования кода чётности. Программа на языке QBasic 'ИСД-08-1. Сидоров Ян 'Формирование кода чётности INPUT "Введи слово английскими или русскими буквами ", s$ a$ = "00000000" PRINT " код код 2сс+"; COLOR 12: PRINT "чётность": COLOR 7 ds = LEN(s$) DIM c(ds) FOR i = 1 TO ds c(i) = ASC(MID$(s$, i, 1)) GOSUB m1 NEXT END m1: p = 8: b$ = "": d = c(i) * 2: ib = 0 DO d = d \ 2 p = p - 1 b = d MOD 2 ib = ib XOR b c$ = MID$(STR$(b), 2) b$ = c$ + b$ LOOP WHILE d > 1 d$ = LEFT$(a$, p) + b$ PRINT CHR$(c(i)); c(i); LEFT$(d$, 8); COLOR 12: PRINT MID$(STR$(ib), 2): COLOR 7 RETURN