birmaga.ru
добавить свой файл

1
Практическая работа № 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$ байт – строка числа в 2 сс с нулями в старших разрядах;

ib избыточный байт для формирования кода чётности.
Программа на языке 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