Для обработки строк, т.е. последовательностей символов, и строковых переменных (тип String) используется операция конкатенации (сложения строк) и строковые функции.
Проект 5.7. «Строковый
калькулятор». Создадим строковый
калькулятор, который позволит производить
различные преобразования строк.
|
Проект «Строковый калькулятор». |
|
1 |
Создать
новый проект. Разместить на форме три
текстовых поля и кнопку. Присвоить им
имена: txt1,
txt2,
txt3,
cmdCon. |
|
2 |
Для кнопки ввести программный код
событийной процедуры cmdCon_Click(),
реализующий операцию конкатенации: Private
Sub cmdCon_Click() txt3.Text
= txt1.Text + txt2.Text End
Sub |
|
3 |
Запустить
проект, в два первых поля ввести строки и
щелкнуть по кнопке Конкатенация. В
третьем поле появится результат
сложения двух строк. |
|
Воспользуемся теперь для
преобразования строк строковой функцией Mid$(строка$,bytM,bytN). Функция вырезает из строки$
подстроку с символа, позиция которого в
строке задается целочисленной переменной bytM, и длиной, которая задается
целочисленной переменной bytN.
4 |
Разместить
на форме кнопку и два текстовых поля.
Присвоить им имена: cmdMid,
txt1Mid,
txt2Mid. |
|
5 |
Для кнопки ввести программный код
событийной процедуры cmdMid_Click(), реализующий операцию
вырезания подстроки. Для преобразования
значений свойства Caption
текстовых
полей, предназначенных для ввода чисел,
использовать функцию Val: Private Sub
cmd_Click() txt3.Text = Mid$(txt1.Text, Val(txt1Mid.Text), Val(txt2Mid.Text)) End
Sub |
|
6 |
Запустить
проект, в первое поле ввести строку, в
поля функции вырезки подстроки ввести
числа и щелкнуть по кнопке Mid$.
В третьем поле появится вырезанная
подстрока. |
|
Для определения количества символов в
строке используется функция определения
длины строки Len(строка$), аргументом которой является строка, а
возвращает функция число, равное
количеству символов в строке.
7 |
Разместить
на форме кнопку и присвоить ей имя cmdLen. |
|
8 |
Для кнопки ввести программный код
событийной процедуры cmdLen_Click(), реализующий операцию
определения количества символов в
строке: Private
Sub cmdLen_Click() txt3.Text
= Len(txt1.Text) End
Sub |
|
9 |
Запустить
проект, в первое поле ввести строку и
щелкнуть по кнопке Len.
В третьем поле появится число символов в
строке. |
|
Для преобразования символов в
соответствующий им числовой код
используется функция Asc(строка$), при этом необходимо иметь в виду, что
функция возвращает числовой код первого
символа строки.
10 |
Разместить
на форме кнопку и присвоить ей имя cmdAsc. |
|
11 |
Для кнопки ввести программный код
событийной процедуры cmdAsc_Click(), реализующий операцию
определения количества символов в
строке: Private
Sub cmdAsc_Click() txt3.Text
= Asc(txt1.Text) End
Sub |
|
12 |
Запустить
проект, в первое поле ввести символ и
щелкнуть по кнопке Asc.
В третьем поле появится числовой код
символа. |
|
13 |
Проект
5.8. «Шифровка и дешифровка текстовых
сообщений».
Данный проект позволит зашифровывать и
расшифровывать текстовые сообщения.
Используем алгоритм шифрования, который
базируется на использовании
ключевой фразы (ключа шифрования).
Пусть
имеется некоторый секретный текст,
который нужно зашифровать. В процессе
шифровки необходимо заменить каждый символ
секретного текста на порядковый номер
этого символа в ключевой
фразе.
При
дешифровке последовательность чисел
должна преобразовываться обратно в
секретный текст с помощью той же ключевой
фразы. Ключевая фраза должна содержать все
символы, которые будут использоваться в
сообщениях, и должна быть известна только
шифровальщику и получателю сообщений.
Исходный
секретный текст, зашифрованное и
дешифрованное сообщения будем вводить и
выводить в текстовых полях, а для запуска
процедур шифровки и дешифровки используем
кнопки.
|
Проект «Шифровка и дешифровка
текстовых сообщений». |
1 |
Разместить
на форме три текстовых поля и две кнопки.
Присвоить им имена: txtSecrtext,
txtCod, txtDecod,
cmdCod, cmdDecod. |
Шифрование. Сначала
составим процедуру шифровки текстовых
сообщений. Пусть
ключевая фраза будет значением строковой
переменной strKF,
а секретный текст значением свойства Text
текстового поля txtSecrtext.
Будем
последовательно вырезать в цикле со
счетчиком bytI
символы
из секретного текста, а затем во вложенном
цикле со счетчиком bytJ
будем искать такой же символ в ключевой
фразе и запоминать его порядковый номер в
целочисленном массиве bytZ.
Таким образом, секретный текст будет
зашифрован последовательностью
чисел, хранящейся в целочисленном массиве.
2 |
Для кнопки Зашифровать
ввести программный код событийной
процедуры cmdCod_Click(),
реализующий шифрование текстового
сообщения, введенного в текстовое поле txtSecrtext: Dim
bytI, bytJ, bytZ(1 To 200) As Byte, strKF, strA, strB As
String Private
Sub cmdCod_Click() strKF
= "электронно-вычислительные машины,
компьютеры (железо) позволяют находить
значения функций, а ещё свойства готовых
объектов" For
bytI = 1 To Len(txtSecrtext.Text) strA
= Mid$(txtSecrtext.Text, bytI, 1) For
bytJ = 1 To Len(strKF) If
Mid$(strKF, bytJ, 1) = strA Then bytZ(bytI) = bytJ: bytJ = Len(strKF)
+ 1 Next
bytJ txtCod.Text
= txtCod.Text + Str(bytZ(bytI)) Next
bytI End Sub |
Дешифрование. Рассмотрим
теперь алгоритм дешифровки. Итак, в нашем
распоряжении шифровка в форме
целочисленного массива bytZ,
которая выведена в текстовое окно txtCod.Text.
Необходимо с помощью ключевой фразы
превратить эту числовую
последовательность в секретный текст.
Затем,
считывая по очередности числа шифровки (элементы
целочисленного массива bytZ),
необходимо
вырезать из ключевой фразы символ,
номер которого по порядку
равен
значению числа шифровки. Полученный
символ последовательно
присоединяется к значению txtDecod.Text,
которое и является исходным секретным
текстом.
3 |
Для кнопки Расшифровать
ввести программный код событийной
процедуры cmdDecod_Click(),
реализующий расшифровку текстового
сообщения, и его вывод в текстовое поле txtDecod: Private
Sub cmdDecod_Click() For
bytI = 1 To Len(txtSecrtext.Text) strB
= Mid$(strKF, bytZ(bytI), 1) txtDecod.Text
= txtDecod.Text + strB Next
bytI End Sub |
|
4 |
Разместить на форме три метки, которые
сделают интерфейс проекта более
наглядным. |
|
5 |
Запустить
проект на выполнение,
ввести в верхнее текстовое поле
секретный текст. |
|
6 |
Щелкнуть
по кнопке Зашифровать, в среднем
текстовом поле появится шифровка в виде
числовой последовательности. |
|
7 |
Щелкнуть
по кнопке Расшифровать, в нижнем
текстовом поле должен появиться
исходный секретный текст. |
|
8 |
Сохранить
проект в файле prj8.vbp. |
5.30.
Модернизировать проект 7 «Строковый
калькулятор». Добавить возможности вырезки из строки
левой и правой подстрок, определение
позиции подстроки в строке и
преобразования числового кода символа в
символ.
5.31.
Создать проект «Подсчет количества
экземпляров символа в тексте», который
позволяет подсчитывать количество
экземпляров какого-либо символа в заданном
тексте.
5.32.
Усовершенствовать предыдущий проект-задание
5.31 так, чтобы ввод и вывод текста и символа
производился с помощью текстовых окон.
5.33.
Создать проект «Замена символа в тексте»,
который позволяет заменять в тексте один
заданный символ на другой.
5.34.
Усовершенствовать предыдущий проект-задание
5.33 так, чтобы ввод и вывод текста и символов
производился с помощью текстовых окон.
5.35.
Создать проект «Слово перевертыш»,
который изменяет прямую
последовательность символов (слева направо)
во введенном слове на обратную (справа
налево).
5.36.
Усовершенствовать предыдущий проект-задание
5.35 так, чтобы ввод и вывод слова
производился с помощью текстового окна.
5.37.
Изменить проект 5.8 «Шифровка и
дешифровка» таким образом, чтобы в
программном коде событийных процедур
использовался цикл с послеусловием.