Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_3_1_Лс_27_11_2011.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
4.63 Mб
Скачать

Завдання на самостійну роботу(в,вс,лс)

ЗАВДАННЯ 15.5. Постановка задачи: СОЗДАТЬ ПРОЕКТ, ПОЗВОЛЯЮЩИЙ ВЫПОЛНЯТЬ ШИФРОВКУ И ДЕШИФРОВКУ СООБЩЕНИЙ С ПОМОЩЬЮ КЛЮЧЕВОЙ ФРАЗЫ. ПРИ ЭТОМ ФРАЗА, КОТОРАЯ БУДЕТ ИСПОЛЬЗОВАТЬСЯ В КАЧЕСТВЕ КЛЮЧЕВОЙ, ДОЛЖНА СОДЕРЖАТЬ ВСЕ БУКВЫ РУССКОГО АЛФАВИТА И НАИБОЛЕЕ ЧАСТО ИСПЛЬЗУЕМЫЕ ЗНАКИ ПРЕПИНАНИЯ. Проект должен состоять из трех форм (рис. 15.9).

Рис. 15.9

Первой должна появиться форма frmKluch, которая позволяет ввести ключевую фразу и выбрать режим работы (рис. 15.10). В качестве ключевой фразы выбрана фраза: "... умею ли я находить с помощью электронно-вычислительной машины значения функций, а также главные объемы!?" Она не глубока по содержанию, но удовлетворяет требованиям ключевой фразы. Вы можете придумать свою ключевую фразу или использовать данную.

После ввода ключевой фразы, выбора режима Шифровка и щелчка по кнопке <ОК> загружается форма Шифровка – frmShifr (рис 15.11). В верхнее текстовое поле вводится секретное сообщение и выполняется щелчок по кнопке <Шифровка>. В нижнем текстовом поле появляется результат шифровки. На форме предусмотрена возможность возврата к форме frmKluch (см. рис. 15.10), где можно сменить режим работы и ключевую фразу.

Рис. 15.10

Рис. 15.11

После выбора режима Дешифровка на форме frmKluch и щелчка по кнопке <ОК> через окно InputBox вводятся коды букв и выполняется щелчок по кнопке <ОК> (рис. 15.12).

Рис. 15.12

После завершения ввода и щелчка по кнопке < Cancel > загружается форма frmDeshifr, где в текстовом появляется результат дешифровки.На форме предусмотрена возможность возврата к форме frmKluch, в которой можно сменить режим работы и ключевую фразу.

Порядок действий

1. Расположите на первой форме (рис. 15.9) две метки, текстовое поле, одну командную кнопку и две кнопки-переключателя (OptionButton) .

2. Установите значения свойства Name: формы – frmKluch, кнопки — cmdOK, текстового поля — txtКluch, кнопок-переключателей — optShifr и optDeShifr (соответственно).

3. Установите значения свойства Caption всех объектов в соответствии с рис. 15.10.

4. Установите для текстового поля значение свойства PasswordChar — *.

5. По собственному усмотрению установите значения свойств, определяюшие внешний вид объектов.

6. Сохраните первую форму под именем frmKluch, а проект — под именем Лр15_Зад5_Шuфровка-Дешuфровка.

7. Добавьте в проект вторую форму (см. рис. 15.11). Разместите те на форме две метки, два текстовых поля и две командные кнопки.

8. Установите значения свойства Name: формы — frmShifr, текстовых полей — txtSecret и txtRezult, кнопок — cmdReturn и cmdShifr

9. Установите для обоих текстовых полей значения свойств ScrollBars — l—Horizontal.

10. Установите значения свойства Caption формы, кнопок и меток, в которых информация не изменяется, в cooтветствии с рис. 15.11.

11. По собственному усмотрению установите значения свойств, определяющие внешний вид объектов.

12. Сохраните вторую форму под именем frmShifr.

13. Добавьте в проект третью форму (см. рис. 15.13). Разместите на форме метку, текстовое поле и две командные кнопки.

14. Установите значения свойства Name: формы — frmDeShifr, текстового поля — txtRezult, кнопок — cmdReturn u cmdDeShifr.

15. Установите для текстового поля значение свойства ScrollBars - l-Horizontal.

16. Установите значения свойства Caption формы, кнопок и меток, в которых информация не изменяется, в соответствии с рис. 15.13.

17. По собственному усмотрению установите значения свойств, определяющие внешний вид объектов.

18. Сохраните третью форму под именем frmDeShifr.

19. Проанализируйте представленные ниже программные коды для трех форм, а потом наберите эти коды.

Форма frmKluch

Public Kluch As String

Private Sub cmdOK_Click()

txtKluch.PasswordChar = “ * “.

Kluch= tхtKluch.Техt

IF optShifr.Value = True Then

frmKluch.Нidе

frmShifr.Show

ElseIf optDeShifr.Va1ue = True Then

frmKluch.Нidе

frmDeShifr.Show

End IF

End Sub

Private Sub Fоrm_Асtivаtе()

txtKluch.Text = "... умею ли я находить с помощью электронно-

вычислительной машины значения функций, а также главные объемы!?"

End Sub

Форма frmShifr

Private Sub Form_Activate()

tхtRеzult.техt = ""

txtSecret.Text = “”

txtSecret. SetFocus

End Sub

Private Sub cmdReturn_ Click()

frmShifr.Нide

frmКluch.Show

End Sub

Private Sub cmdShifr_Click()

Dim secret As String, р As String

Dim L As Integer, i As Integer, с As Integer

tхtRеzult.Техt = ""

txtSecret.SetFocus

secret = txtSecret.Text ‘секретное сообщение

L = Len(secret) ‘длина секретного сообщения

For i = 1 То L

р = Mid(secret, i, 1) ‘выделяется один символ секретного сообщения

c=InStr(frmКluch. Кluch,p) ‘определяется его код – место первого ‘появления в ключевой фразе

tхtRеzult.Техt = tхtRеzult.Техt + Str(c) + " " 'Вывод результатов ‘шифровки

Next i

End Sub

Форма frmDeShifr

Private Sub cmdReturn_ Click()

frmDeShifr. Нide

frmКluch.Show

End Sub

Private Sub cmdDeShifr _ Click()

Dim r As String

Dim х As String

Dim secret As String

r = InрutВох("Введите шифр буквы и щелкните по кнопке OK, при завершении ввода щелкните по кнопкам <Саnсеl>, <Дешифровка»)

Do Until r = ""

х = Мid(frmКluсh.Kluсh, r, 1) 'Выделяем одну букву на nозиции r в ключевой фразе

secret = secret + х 'Формируем результат дешифровки ‘(секретное сообщение)

r = InрutВох("Введите шифр буквы и щелкните по кнопке OK, при завершении ввода щелкните по кнопкам <Саnсеl>, <Дешифровка»)

Loop

tхtRеzult.Visible = True

tхtRеzult.Text = secret

End Sub

Private Sub Form_Activate()

tхtRеzult.Техt = ""

tхtRеzult.Visible =False

End Sub

20. Проверьте правильность работы проекта. Устраните возможные ошибки.

21. Сохраните проект под именем Лр15_Зад5_Шифровка_Дешифровка

ЗАВДАННЯ 15.6. Постановка задачи: ПЕРВЫЙ ИГРОК ПРЕДЛАГАЕТ КОМПЬЮТЕРУ СЛОВО, СОСТОЯЩЕЕ НЕ МЕНЕЕ ЧЕМ ИЗ ДВУХ БУКВ. МАКСИМАЛЬНАЯ ДЛИНА СЛОВА ОГРАНИЧЕНА ДЕСЯТЬЮ БУКВАМИ. КОМПЬЮТЕР "ПЕРЕМЕШИВАЕТ" БУКВЫ И ВЫДАЕТ АНАГРАММУ ИСХОДНОГО СЛОВА. ВТОРОЙ ИГРОК ПО АНАГРАММЕ ДОЛЖЕН ОПРЕДЕЛИТЬ ЗАДАННОЕ СЛОВО.

После ввода загаданного слова в текстовое поле (слово отображается в поле звездочками) и щелчка по кнопке <Показать анаграмму > на кнопках (рис. 15.13) появляются буквы, из которых состоит слово.

Пытаемся отгадать слово. Щелкаем по кнопкам в том порядке, в котором буквы, расположенные на них, входят в слово. Кнопки, по которым щелкнули мышью, пропадают, а буквы слова появляются в нижнем текстовом поле (рис. 15.14).

Далее следует щелкнуть по кнопке <Проверка>. Если слово угадано, в окне MsgBox появляется соответствующее сообщение, а слово проявляется в верхнем поле (рис. 15.15).

Рис. 15.13

Рис. 15.14

Если слово не угадано, в окне MsgBox появляется соответствующее сообщение и предоставляется возможность угадать слово заново или ввести новое слово, щелкнув по кнопке < Новое слово>.

Порядок действий

1. Разделите форму линиями на три части.

Рис. 15.15

2. В верхней части формы расположите метку, текстовое поле и командную кнопку. Значение свойства Name текстового поля — txtСлова, кнопки — сmdАнаграмма.

3. Установите для текстового значение поля свойства PasswordChar — *.

4. В средней части формы расположите метку, ниже разместите десять

объектов типа Контрольный индикатор (CheckBox).Установите для них значение свойства Stylel-Graphical. Значение свойства Name для всех элементов — chk, а значение свойства Index — от 1 до 10. Данные объекты образуют массив объектов.

5. В нижней части формы расположите метку, текстовое поле и три командные кнопки. Значение свойства Name текстового поля — txtОтвет, кнопок — соответственно сmdПроверка, сmdНовоеСлово и сmdВыход.

6.3начение свойства Caption для формы и меток установите в соответствии с рис. 15.14.

7. Сохраните проект под именем Лр40_Зад6_Анаграмма

8. Подробно разберите представленный ниже программный код, а затем наберите его.

Option Explicit

Dim Слово As String, Анаграмма As String, c As String, Ответ As String

Dim L1 As Integer, L2 As Integer, i As Integer, j As Integer

Dim Index As Integer

Dim a(1 To 10) As String

Private Sub chk_Click(Index As Integer)

Ответ = Ответ + chk(Index).Caption 'При щелчке по кнопке с выбранной буквой к перемнной Ответ 'добавляется буква с кнопки

txtОтвет.Text = Ответ

chk(Index).Visible = False 'Кнопка с выбранной буквой становится невидимой

End Sub

Private Sub Form_Activate()

txtСлово.SetFocus

Ответ = ""

End Sub

Private Function Letter(a As String, i As Integer) As String 'Функция удаления букв

Select Case i

Case 1

Letter = Right(a, Len(a) - 1)

Case Len(a)

Letter = Left(a, Len(a) - 1)

Case Else

Letter = Left(a, i - 1) + Right(a, Len(a) - 1)

End Select

End Function

Private Sub сmd_Click()

txtСлово.PasswordChar = ""

For Index = 1 To 10

chk(Index).Enabled = True

Next Index

For Index = 1 To 10

chk(Index).Value = 0

chk(Index).Visible = True

chk(Index).Caption = ""

Next Index

txtСлово.SetFocus

txtОтвет.Text = ""

txtСлово.Text = ""

Ответ = ""

End Sub

Private Sub сmdАнаграмма_Click()

Слово = txtСлово.Text 'Загаданное слово

L1 = Len(Слово) 'Длина загаданного cлова

c = Слово

L2 = Len(c)

Randomize Timer

For i = 1 To L1

j = 1 + Int(L2 * Rnd()) 'j - случайная позиции буквы в загаданном слове

chk(i).Caption = Mid(c, j, 1) 'Выделение одной буквы слова на позиции j иразмещение этой буквы на кнопке с номером i

a(i) = chk(i).Caption 'Запоминание выделенной буквы в массиве a

c = Left(c, j - 1) + Right(c, L2 - j) 'Из слова удаляется буква на позиции j

L2 = L2 - 1 'Длина слова уменьшается на 1

Next i

End Sub

Private Sub сmdВыход_Click()

End

End Sub

Private Sub сmdПроверка_Click()

If Ответ = Слово Then 'Если слово угадано

txtСлово.PasswordChar = ""

txtСлово.Text = Слово 'Оно появляется на месте'загаданного

MsgBox "Слово угадано !!!", vbOKOnly, "Проверка"

Else 'Если слово не угадано.

MsgBox "Не угадал! Попробуй еще!", vbOKOnly, "Проверка" 'предлагается ‘следующая попытка

For Index = 1 To L1

chk(Index).Value = 0

chk(Index).Visible = True

chk(Index).Caption = a(Index)

Next Index

txtОтвет.Text = ""

Ответ = ""

End If

End Sub

9. Проверьте правильность работы проекта. Устраните возможные ошибки.

10. Сохраните изменения в проекте.

Подведем итоги: В работе были использованы новые Функции:

Len (определение длины строки);

Mid (выделение строки символов в строке);

UCase (перевод всех строчных букв строки в прописные)

Asc (выдача цифрового значения, которое соответствует коду ASCII первого символа строки);

Chr (выдача символа, код ASCII которого определяется аргументом функции);

Instr (отыскание места первого появления некоторой строки в другой строке начиная с некоторой позиции).