Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб 5 метод Хэмминга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.96 Mб
Скачать

If Not (a.FolderExists(papka)) Then

a.CreateFolder(papka)

End if

user1=papka & "account.txt"

If Not(a.FileExists(user1)) Then

Set us=a.CreateTextFile(user1,True,False)

us.WriteLine("файл")

us.WriteLine("пустой")

end if

Set us=a.OpenTextFile(user1,1)

login=us.ReadLine

parol=us.ReadLine

us.close

if username=login then

if password=parol then

MsgBox"Доступ разрешен ",0,"Идентификация"

Window.Open("d:\lab5\list3\model.html")

else

MsgBox"Неверный пароль "

end if

else

MsgBox"Неверное имя "

end if

'a.close

end sub

-->

</SCRIPT>

Сохранить документ как d:\lab5\list1\Index.html.

13. Подключим код для работы формы регстрации. Для этого необходимо в Блокноте или Notepad++ открыть исходный код страницы Registr.html и добавить следующий фрагмент скрипта в заголовок, то есть между тегами <head> и </head>:

<SCRIPT LANGUAGE="VBScript">

<!--Для работы с несовместимым броузерами

Dim parol,login

Dim a,papka,user1

sub button_OnClick()

login=document.all.Edit1.value

parol=document.all.Edit2.value

Set a=CreateObject("Scripting.FileSystemObject")

papka="d:\dostup\"

If Not (a.FolderExists(papka)) Then

a.CreateFolder(papka)

End if

user1=papka & "account.txt"

Set us=a.CreateTextFile(user1,True)

us.WriteLine(login)

us.WriteLine(parol)

us.close

MsgBox"Регистрация выполнена ",0,"Подтверждение регистрации"

'a.close

end sub

-->

</SCRIPT>

Сохранить документ как d:\lab5\list2\Registr.html.

14. Подключим код для работы демонстрационной модели кода Хэмминга.Для этого необходимо в Блокноте или Notepad++ открыть исходный код страницы Model.html и добавить следующий фрагмент скрипта в заголовок, то есть между тегами <head> и </head>:

<SCRIPT LANGUAGE="VBScript">

<!--Для работы с несовместимым броузерами

Dim proba 'переменная введенной строки

Dim n,i,j,a,b,h 'переменная счетчик

Dim nkod ' переменная кодированного массива

Dim kreal,ostatok,rasr,data1,sch,kontrol,poz,nomer,kolosh,k1

Dim isprav,ispravkontr,symbolkod 'переменная исправленных ошибок

Dim m 'переменная количества информационных символов

Dim k ' переменная количества контрольных символов

Dim onestring(),kodsymbol(),binarykod(),kodmassiv(),symbol() 'объявляем массивы

sub Button1_OnClick() 'кнопка "Обработать данные кодом Хэмминга"

document.all.Edit2.value="" 'очистка ячеек браузера от старой информации

document.all.Edit3.value=""

document.all.Edit4.value=""

document.all.Edit5.value=""

document.all.Edit6.value=""

document.all.Edit7.value=""

proba=document.all.Edit1.value 'сохраняем значение введенной строки

n=len(proba) 'длина введенной фразы

m=8 'размер информационного поля в битах

Redim onestring(n) ' создаем массив одиночных символов по введенной строке

Redim kodsymbol(n) ' создаем массив ASCII кодов символов

Redim binarykod(n,m) ' создаем массив двоичных ASCII кодов символов

for i=1 to n 'создаем массив с одиночными символами

onestring(i)=mid(proba,i,1)

document.all.Edit2.value=document.all.Edit2.value+CStr(onestring(i))

next

for i=1 to n 'создаем массив ASCII кодов символов

kodsymbol(i)=asc(onestring(i))

next

for i=1 to n 'создаем двоичный массив из массива ASCII кодов символов

for j=1 to m

binarykod(i,j)=kodsymbol(i) mod 2

kodsymbol(i)=kodsymbol(i)\2

next

next

k=0 'обнуляем переменную "количество контрольных бит"

do while (m+1)>(2^k-k) 'определяем количество контрольных бит

k=k+1

loop

nkod=k+m 'определяем размер кодированного символа в двоичном системе

ReDim kodmassiv(n,nkod) 'определяем размер кодированного массива

for i=1 to n 'заносим информационные биты в кодированный массив

a=m 'счетчик информационных разрядов

for j=1 to nkod

kontrol=0 'метка отсутствия контрольного разряда

for b=0 To k-1 'кроме контрольных разрядов

kreal=2^b

if j=kreal then

kontrol=1 'метка наличия контрольного разряда

kodmassiv(i,j)=0 'обнуляем контрольные разряды

end if

next

if kontrol=0 then 'запись в кодированный массив информационного кода

kodmassiv(i,j)=binarykod(i,a)

a=a-1

end if

next

next

for i=1 to n 'запись в кодированный массив контрольного кода

for j=1 to nkod

poz=0

for b=0 To k-1 'просмотр контрольных бит

kreal=2^b

if j=kreal then

nomer=kreal

do 'номер позиции первой младшей единицы двоичного кода символа

ostatok=kreal mod 2

kreal=kreal\2

poz=poz+1

loop until ostatok=1

end if

next

if poz>0 then

for h=nomer+1 To nkod 'суммируем значения битов с одинаковыми номерами poz

data1=h

sch=0

do

ostatok=data1 mod 2

data1=data1\2

sch=sch+1

loop Until sch=poz

if ostatok=1 then

kodmassiv(i,j)=kodmassiv(i,j) XOR kodmassiv(i,h) ' расчет контрольного кода

end if

next

end if

next

next

end sub

sub Button2_OnClick() 'чтение парольной фразы полученной из канала связи

ReDim symbol(n) 'определяем кодированный массив

for i=1 to n ' последовательное чтение символов контрольной фразы

a=m 'счетчик информационных разрядов

symbol(i)=0

for j=1 to nkod 'читаем информационные биты

kontrol=0 'метка отсутствия контрольного разряда

for b=0 To k-1 'кроме контрольных разрядов

kreal=2^b

if j=kreal then

kontrol=1 'метка наличия контрольного разряда

end if

next

if kontrol=0 then 'расчет десятичного кода символа

symbol(i)=symbol(i)+kodmassiv(i,j)*2^(a-1)

a=a-1

end if

next

next

document.all.Edit6.value="" 'вывод информации о парольной фразе в браузер

for i=1 to n

document.all.Edit6.value=document.all.Edit6.value+Chr(symbol(i))

next

end sub

sub Button3_OnClick() ' кнопка управления "передать по каналу связи с единичными ошибками""

'вводим ошибки передачи данных

for i=1 to n ' обнуляем контрольные элементы в массиве

kodmassiv(i,0)=0

next

Randomize 'функция случайных чисел

kolosh = Int(n*Rnd ) + 1 'случайное число ошибок kolosh не больше n

document.all.Edit3.value="" 'число ошибок в канале связи

document.all.Edit3.value=CStr(kolosh)

k1=0

do while k1<kolosh

i = Int(n*Rnd + 1) ' случайный выбор символа для добавления ошибки

if kodmassiv(i,0)=0 then

j = Int(nkod*Rnd + 1) ' добавляем ошибки в случайные разряды

Select Case kodmassiv(i,j)

Case 0

kodmassiv(i,j)=1

Case 1

kodmassiv(i,j)=0

End Select

k1=k1+1 'количество занесенных ошибок

kodmassiv(i,0)=1

end if

loop

'чтение парольной фразы

ReDim symbol(n) 'определяем кодированный массив

for i=1 to n ' последовательное чтение символов контрольной фразы

a=m 'счетчик информационных разрядов

symbol(i)=0

for j=1 to nkod 'читаем информационные биты

kontrol=0 'метка отсутствия контрольного разряда

for b=0 To k-1 'кроме контрольных разрядов

kreal=2^b

if j=kreal then

kontrol=1 'метка наличия контрольного разряда

end if

next

if kontrol=0 then 'расчет десятичного кода символа

symbol(i)=symbol(i)+kodmassiv(i,j)*2^(a-1)

a=a-1

end if

next

next

document.all.Edit8.value=""

for i=1 to n 'читаем массив строк с одиночными символами

document.all.Edit8.value=document.all.Edit8.value+Chr(symbol(i))

next

'окончание чтения полученной фразы

end sub

sub ListBox_onchange() 'выбор из выпадающего списка

Dim intMnt

intMnt=CInt(document.all.ListBox.value)

Select Case intMnt

Case 0

document.all.Edit1.value=""

Case 1

document.all.Edit1.value="Прошлого не вытравить,не выкрасть."

Case 2

document.all.Edit1.value="Растерять легко по пустякам."

Case 3

document.all.Edit1.value="Быть самым-самым первым."

Case 4

document.all.Edit1.value="За призванье надо биться."

Case 5

document.all.Edit1.value="Произносить чужие мысли вслух."

Case 6

document.all.Edit1.value="Друзей без вниманья оставить нельзя."

Case 7

document.all.Edit1.value="Мой дом-моя крепость!"

End Select

end sub

sub Button4_OnClick() 'Исправление ошибок при передаче информации

'заново рассчитываем контрольные биты в кодированном массиве

for i=1 to n ' последовательный просмотр символов контрольной фразы

for j=1 to nkod

poz=0

for b=0 To k-1 'просмотр контрольных бит

kreal=2^b

if j=kreal then

nomer=kreal

do 'номер позиции первой младшей единицы двоичного кода символа

ostatok=kreal mod 2

kreal=kreal\2

poz=poz+1

loop until ostatok=1

end if

next

if poz>0 then

for h=nomer+1 To nkod 'суммируем значения бит с одинаковыми номерами poz

data1=h

sch=0

do

ostatok=data1 mod 2

data1=data1\2

sch=sch+1

loop Until sch=poz

if ostatok=1 then

kodmassiv(i,j)=kodmassiv(i,j) XOR kodmassiv(i,h) ' расчет контрольного бита

end if

next

end if

next

next

'расчет десятичного кода контроля символа

ispravkontr=0

isprav=0

for i=1 to n ' последовательное чтение символов контрольной фразы

a=0 'счетчик контрольных разрядов

symbolkod=0

for j=1 to nkod 'читаем информационные биты

for b=0 To k-1 'только контрольные разряды

kreal=2^b

if j=kreal then

symbolkod=symbolkod+kodmassiv(i,j)*2^a 'расчет десятичного кода контроля

a=a+1

end if

next

next

' исправим единичную ошибку

if symbolkod>0 then

Select Case kodmassiv(i,symbolkod)

Case 0

kodmassiv(i,symbolkod)=1

Case 1

kodmassiv(i,symbolkod)=0

End Select

isprav=isprav+1

for b=0 To k-1 'только контрольные разряды

kreal=2^b

if symbolkod=kreal then

ispravkontr=ispravkontr+1

end if

next

end if

next

document.all.Edit4.value=""

document.all.Edit4.value=CStr(isprav)

document.all.Edit5.value=""

document.all.Edit5.value=CStr(ispravkontr)

' конец исправления ошибок

'чтение парольной фразы

ReDim symbol(n) 'определяем кодированный массив

for i=1 to n ' последовательное чтение символов контрольной фразы

a=m 'счетчик информационных разрядов

symbol(i)=0

for j=1 to nkod 'читаем информационные биты

kontrol=0 'метка отсутствия контрольного разряда

for b=0 To k-1 'кроме контрольных разрядов

kreal=2^b

if j=kreal then

kontrol=1 'метка наличия контрольного разряда

end if

next

if kontrol=0 then 'расчет десятичного кода символа

symbol(i)=symbol(i)+kodmassiv(i,j)*2^(a-1)

a=a-1

end if

next

next

document.all.Edit7.value=""

for i=1 to n 'читаем массив строк с одиночными символами

document.all.Edit7.value=document.all.Edit7.value+Chr(symbol(i))

next

'окончание чтения полученной фразы

end sub

-->

</SCRIPT>

Сохранить документ как d:\lab5\list3\Model.html.

14. Запустить на выполнение программу .

Для этого запускаем через Internet Explorer d:\lab5\list1\Index.html.

После появления окна формы (рисунок 2) необходимо попытаться ввести логин и пароль в форму. Программа подтвердит, что логин неверный.

После этого необходимо нажать на ссылку “Регистрация”. Программа покажет новое окно с формой для регистрации. Нужно набрать логин и пароль любыми буквами русского и латинского алфавита и подтвердить регистрацию.

Если все выполнилось правильно , то программа сообщить об успешной регистрации.

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

Необходимо на странице модели выбрать понравившуюся парольную фразу из предложенных или самостоятельно ввести любую на русском или английском языке, соблюдая знаки препинания. После этого необходимо нажать кнопку “Обработать данные методом Хэмминга” для просмотра результатов работы.

Далее необходимо передать данные по каналу связи без ошибок, нажав на соответствующую кнопку и также посмотреть результат.Тоже самое можно сделать для канала связи с ошибками, нажав на сответствующую кнопку и оценив результат передачи данных.

После получения недостоверной информации необходимо попытаться ее восстановит, нажав на кнопку “Восстановить информацию”. Программа определит количество ошибок (оно должно совпасть с количеством полученных ошибок из канала связи). Ошибки возможны и в контролирующей информации кода Хэмминга (это отображается в соответствующем окне программы).В завершении работы программы парольная фраза будет восстановлена и результаты будут отображены в окне программы.

15. Повторить эксперимент несколько раз для получения достоверных результатов.

16. Оценить результаты экспериментов по различным критериям (ограничения по количеству передаваемых символов в парольной фразе, максимальный обьем используемого алфавита, скорость обработки информации).

В результате эксперимента получим один из вариантов работы модели (рисунок 5):

Рисунок 5. Страница с полученными результатами эксперимента.

Содержание отчета.

1.Блок-схема алгоритма работы программного кода.

2.Скриншоты этапов работы.

3.Листинг программ на языке VBS с подробными комментариями.

4. Пояснение полученных результатов эксперимента.

5.Исходные программы представить в бумажном и электронном виде.

Контрольные вопросы.

1.Коды Хэмминга.

2. Пример использования кодов Хэмминга .

3. Основной и расширенный коды ASCII.

4. Язык текстовой разметки HTML.

5. Каскадные таблицы стилей CSS.

6. язык скриптовых сценариев VBScript .

7. Алгоритм работы модели самокорректирующих кодов Хэмминга в канале связи.

Список литературы:

1 А. Гарнаев, Самоучитель VBA. – Санкт-Петербург, Издательство БХВ–Санкт-Петербург, 2011. – 511с.

2. В.С. Пташинский, Самоучитель Office 2013– Москва, Издательство Эксмо,2013. – 288с.

3. О.В.Спиридонов, Microsoft Office для пользователя– Москва, Издательство Эксмо,2013– 350с.

4. Н.В.Макарова, В.Б. Волков, Информатика – Санкт-Петербург, Издательство Питер, 2011– 576с.

5. Г.Н.Хубаев, С.М. Патрушина, Н.Г. Савельева, Е.Г. Веретенникова, Информатика– Ростов-на-Дону, Издательство Феникс,2010– 288с.

6. Э.В. Вашкевич, PowerPoint 2007. Эффективные презентации на компьютере– Санкт-Петербург, Издательство Питер, 2008– 240с.

7. Ю.И.Кудинов, Ф.Ф. Пащенко, А.Ю. Келина, Практикум по основам современной информатики – Санкт-Петербург, Издательство Лань, 2011– 352 с.

8. Ю.И. Кудинов ,Ф.Ф. Пащенко, Основы современной информатики– Санкт-Петербург, Издательство Лань ,2011– 256 с.

9. В.Леонов, PowerPoint 2010 с нуля– Москва, Издательство Эксмо,2010– 320с.

11.А.В. Гураков, Информатика. Введение в Microsoft Office –Томск, издательство Эль Контент, 2012– 120с.

10. А.С.Грошев, Информатика.Учебник для вузов-Архангельск, издательство Архангельского государственного технического университета,2010-470с.

11. А.С.Грошев, Программирование на языке Microsoft Visual Basic for Applications.Методические указания к выполнению лабораторных работ.- Архангельск, издательство Архангельского государственного технического университета,2013-35с.

12. С.Каммингс, VBA для “чайников”-Москва,Издательский дом “Вильямс”,2002-448с.

13. А.Н.Любин, Создание пользовательских форм в Visual Basic for Applications.Учебное пособие-Москва,издательство МГМУ “МАМИ” ,2012-60с.

14.Л.А.Демидова, А.Н.Пылькин, Программирование в среде Visual Basic for Applications.Практикум-Москва,Горячая линия-Телеком,2014-175с.

15. И.С.Осетрова, Н.А.Осипов, Microsoft Visual Basic for Applications.Учебное пособие- Санкт-Петербург, Издательство НИУ ИТМО ,2013– 130 с.

16. Н.С. Маркин «Основы теории обработки результатов измерения» – Москва, Издательство Эксмо,2014. – 245с.

78