Шифр Цезаря Код VB 6.0

Гай Юлий Цезарь ( 12 июля 100 г. до н.э - март 44 г. до н.э.)

  1. Формулировка учебного задания по Шифру Цезаря
  2. Данные на входе и интерфейс программы
  3. Перебор символов строки в цикле
  4. Тестирование готового приложения.
  5. Классы, упрощающие решение задачи

Один из самых простых и ненадежных алгоритмов кодирования на сегодняшний день, но для учебных целей подходит как нельзя лучше…


Формулировка учебного задания по Шифру Цезаря

Суть метода Цезаря: при кодировании используется сдвиг на (ключ) заданное число символов.

Задание:

Разработать программу, кодирующую входную строку методом моноалфавитной подстановки, используя «шифр Цезаря».

К цифровому коду каждой буквы (русского и английского алфавитов) прибавить заданное пользователем значение key (ключ). Если получившийся код выходит за пределы указанных наборов символов, то считать, что за последним символом набора снова следует первый (цикл по кольцу). Вывод результата кодирования-декодирования представить на этой же форме.

Допустимые символы – ВСЕ!!! т.е. все символы английского (латинского) и русского алфавитов, цифры и другие знаки вводимые с клавиатуры, но символы не принадлежащие русскому или английскому алфавитам - остаются без изменений.

Данные на входе и интерфейс программы

Поскольку задание учебное, то для простоты и наглядности:

  • ввод первичного открытого текста - будет осуществляться в первое (верхнее) текстовое окно
  • его кодирование (закрытый текст) - будет помещаться во второе текстовое окно, после нажания на кнопку1
  • декодирование текста из второго окна (открытый текст) - будет помещаться в третье текстовое окно, после нажания на кнопку2

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


Перебор символов строки в цикле

Поскольку любая строка является индексированным множеством символов, то ее обработку проводим с использование цикла…

Привожу для примера код двух строковых функций (кодирования и декодирования):

//------------------------------
Function EncodeCesar(txt As String) As String
Dim s As String, i As Integer, v As Integer, vnew As Integer
For i = 1 To Len(txt)
    v = Asc(Mid(txt, i, 1))
    Select Case v

        Case Asc("А") To Asc("Я") 'русские большие
        vnew = v + sme: If vnew > Asc("Я") Then vnew = vnew - 32

        Case Asc("а") To Asc("я") 'русские маленькие
        vnew = v + sme: If vnew > Asc("я") Then vnew = vnew - 32

        Case Asc("A") To Asc("Z") 'английские большие
        vnew = v + sme: If vnew > Asc("Z") Then vnew = vnew - 26

        Case Asc("a") To Asc("z") 'английские маленькие
        vnew = v + sme: If vnew > Asc("z") Then vnew = vnew - 26

        Case Else
        vnew = v
    End Select
    s = s & Chr(vnew)
Next i
EncodeCesar = s
End Function

//------------------------------

Function DecodeCesar(txt As String) As String
Dim s As String, i As Integer, v As Integer, vnew As Integer
For i = 1 To Len(txt)
    v = Asc(Mid(txt, i, 1))
    Select Case v

        Case Asc("А") To Asc("Я") 'русские большие
        vnew = v - sme: If vnew < Asc("А") Then vnew = vnew + 32

        Case Asc("а") To Asc("я") 'русские маленькие
        vnew = v - sme: If vnew < Asc("а") Then vnew = vnew + 32

        Case Asc("A") To Asc("Z") 'английские большие
        vnew = v - sme: If vnew < Asc("A") Then vnew = vnew + 26

        Case Asc("a") To Asc("z") 'английские маленькие
        vnew = v - sme: If vnew < Asc("a") Then vnew = vnew + 26

        Case Else
        vnew = v

    End Select
    s = s & Chr(vnew)
Next i
DecodeCesar = s
End Function //------------------------------



Тестирование готового приложения Шифр Цезаря.

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

 Тестирование готового приложения Шифр Цезаря.
Рис.1        Тестирование готового приложения Шифр Цезаря.

скачать ехе-файл для тестирования





Классы, упрощающие решение задачи

Объектно-ориентированное программирование (ООП) позволяет сделать код программ более коротким и удобочитаемым.

И хотя, в такой маленькой программе можно обойтись без классов (объектов классов), но учиться следует на легких примерах..., так что здесь со временем появится ссылка на еще один проект…

Другие примеры на тему «Шифрование, Кодирование и/или Сжатие Информации»

Другие примеры на языке «Visual Basic»





Если у Вас остались вопросы, то задать их Вы можете, нажав на эту кнопочку ...


Поделиться в соц сетях:



Если на этой странице не нашлось того, что Вы так искали...

         Не расстраивайтесь, не все потеряно... Смело щелкайте...
исходный код на заказ. orenstudent.ru Автоматизация документов MS Office. orenstudent.ru исходный код на заказ. orenstudent.ru Помогите найти и устранить ошибку в исходном коде программы. orenstudent.ru Skype-консультирование по программированию
Скайп-консультации

Акция !!!
исходный код комментарии цена минимальная


Не попадайтесь на удочку мошенников-кидал...
Сайт помощи студентам по программированию и информатике

Program code