- •Высшего профессионального образовании
- •Глава1 Глава2 Глава3
- •VbScript.
- •InputBox(подсказка, заголовок, исходное_значение, X, y)
- •InputBox подсказка, заголовок, исходное_значение, X, y
- •15 ‘ Целое число
- •If условие Then выражение
- •If условие Then
- •If условие-1 Then
- •If Not (a.FolderExists(papka)) Then
- •If Not(a.FileExists(user1)) Then
- •If Not (a.FolderExists(papka)) Then
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с.
