Описание выполнения Задания 3.
Название работы: Задание 3.
Тема задания: “Обработка чисел и числовых последовательностей”.
Цель задания: Освоение типовых алгоритмов обработки чисел и числовых последовательностей, а также использование этих алгоритмов для решения практических задач в соответствии с индивидуальным заданием. Ознакомление с элементами управления OptionButton, Image, ListBox и Frame.
В этом задании нужно решить 3 задачи. В качестве примера ниже рассмотрены следующие задачи:
1. Обработка числа (целого или вещественного)
Дано 7-значное натуральное число. Получить новое число
вычеркиванием четных цифр в исходном числе.
2. Обработка числовой последовательности с известным количеством
элементов.
Среди всех 4-значных натуральных чисел найти общее количество
простых и значение наибольшего из них.
3. Обработка числовой последовательности с неизвестным
количеством элементов.
Вводится последовательность натуральных чисел с заранее
неизвестным количеством элементов. Найти сумму самой длинной
ее цепочки подряд идущих нечетных чисел.
Решение всех трех задач производится на одной форме frmZ3r. Открываем новый проект и размещаем на форме 7 меток, 2 текстовых окна, командную кнопку, 5 элементов Image, элемент ListBox и элемент Frame (контейнер). После размещения элемента Frame размещаем на нем 3 элемента OptionButton. При этом нужно следить за тем, чтобы в момент начала размещения каждого из элементов OptionButton на контейнере Frame курсор мышки находился на контейнере Frame. Иначе нарисованный элемент OptionButton хотя и будет выглядеть принадлежащим элементу Frame, но фактически принадлежать ему не будет.
В папку проекта копируем 2 разных файла с расширением ico, которые содержат небольшие графические изображения. Свойству Picture элемента Image1 присваиваем значение какого-либо из этих рисунков. Второй рисунок присваиваем значениям свойства Picture всех остальных элементов Image. Процесс нанесения изображения на элемент Image прост: в окне свойств нужно щелкнуть на свойстве Picture, а затем на появившемся в его строке значке троеточия. В результате откроется окно, в котором будет список скопированных в папку проекта графических файлов. Выделяем один из них и щелкаем в этом окне по кнопке “Открыть”. После нанесения изображений на все элементы Image графические файлы можно удалить из папки проекта, так как теперь они будут храниться в автоматически созданном файле с расширением frx. Понятно, что удалять графические файлы из папки проекта можно только после сохранения проекта. В итоге форма должна принять изображенный на рисунке вид.
Таблица свойств формы и расположенных на ней элементов управления
Объект |
Свойство |
Значение свойства |
Форма |
Name Caption |
frmZ3r Задание № 1. Обработка чисел и числовых последовательностей |
Метка |
Name Caption
Alignment Font |
Label1 Устанавливается в процедурах для каждой из решаемых задач 2-центровка Times New Roman, жирный, размер 10 |
Метка |
Name Caption Alignment Font |
Label2 Решение задачи № 1 0-левая привязка Times New Roman, обычный, размер 8 |
Метка |
Name Caption Alignment Font |
Label3 Решение задачи № 2 0-левая привязка Times New Roman, обычный, размер 8 |
Метка |
Name Caption Alignment Font |
Label4 Решение задачи № 3 0-левая привязка Times New Roman, обычный, размер 8 |
Метка |
Name Caption
Alignment Font |
Label5 Устанавливается в процедурах для каждой из решаемых задач 1-правая привязка Times New Roman, обычный, размер 8 |
Метка |
Name Caption
Alignment Font |
Label6 Устанавливается в процедурах для каждой из решаемых задач 1-правая привязка Times New Roman, обычный, размер 8 |
Метка |
Name Caption
Alignment Font |
Label7 Устанавливается в процедурах для каждой из решаемых задач 2-центровка Times New Roman, обычный, размер 8
|
Текстовое окно |
Name Text Alignment Font |
Text1 Используется для вывода результата 0-левая привязка Times New Roman, обычный, размер 8 |
Текстовое окно |
Name Text Alignment Font |
Text2 Используется для вывода результата 0-левая привязка Times New Roman, обычный, размер 8 |
Командная кнопка |
Name Caption Font Style BackColor |
Command1 Выход Times New Roman, обычный, размер 8 Graphical vbYellow |
Контейнер |
Name Caption Font |
Frame1 № задачи |
Селекторная кнопка |
Name Caption Alignment Font |
Option1 Задача № 1 0-левая привязка Times New Roman, обычный, размер 8 |
Селекторная кнопка |
Name Caption Alignment Font |
Option2 Задача № 2 0-левая привязка Times New Roman, обычный, размер 8
|
Селекторная кнопка |
Name Caption Alignment Font |
Option3 Задача № 3 0-левая привязка Times New Roman, обычный, размер 8
|
Рисунок |
Name Picture Stretch |
Image1 Выбрать самостоятельно Stretch |
Рисунок |
Name Picture
Stretch |
Image2 Выбрать самостоятельно отличающимся от Image1 Stretch |
Рисунок |
Name Picture Stretch |
Image3 Такой, как у Image2 Stretch |
Рисунок |
Name Picture Stretch |
Image4 Такой, как у Image2 Stretch
|
Рисунок |
Name Picture Stretch |
Image5 Такой, как у Image2 Stretch |
Список |
Name Font |
List1 Times New Roman, обычный, размер 10 |
Процедуры формы frmZ3:
Процедура решения 1-ой задачи:
Private Sub Option1_Click()
Image3.Picture = Image1.Picture
Image4.Picture = Image2.Picture
Image5.Picture = Image2.Picture
Dim n&, m&, rez&, k As Byte, s As Byte
Text1 = "": Text2 = ""
Label1 = "Дано 7-значное натуральное число. Получить новое число" & _
" вычеркиванием четных цифр в исходном числе."
Label5 = "Исходное число:": Label6 = "Результат:"
Label7.Visible = False
List1.Visible = False
If Option1.Value Then
Randomize
n = Rnd * 10 ^ 7
m = n: s = 0: rez = 0
Text1 = Str(n)
Do While m >= 1
k = m Mod 10
If k Mod 2 <> 0 Then
s = s + 1
rez = rez + k * 10 ^ (s - 1)
End If
m = m \ 10
Loop
Text2 = Str(rez)
End If
End Sub
Вид рабочей формы с результатом решения 1-ой задачи:
Процедура решения 2-ой задачи:
Private Sub Option2_Click()
Image4.Picture = Image1.Picture
Image3.Picture = Image2.Picture
Image5.Picture = Image2.Picture
Dim i%, j%, n%, k%, f As Boolean
If Option2.Value Then
Text1 = "": Text2 = ""
Label1 = "Среди всех 4-значных натуральных чисел найти общее " & _
"количество простых и значение наибольшего из них."
Label5 = "Макс. простой:": Label6 = "Кол-во простых:"
Label7 = "Простые числа:"
Label7.Visible = True
List1.Visible = True: List1.Clear
k = 0
For i = 1000 To 9999
f = True
For j = 2 To i \ 2
If i Mod j = 0 Then f = False: Exit For
Next j
If f Then n = i: k = k + 1: List1.AddItem Str(n)
Next i
Text1 = Str(n): Text2 = Str(k)
End If
End Sub
Вид рабочей формы с результатом решения 2-ой задачи:
Процедура решения 3-ей задачи:
Private Sub Option3_Click()
Image5.Picture = Image1.Picture
Image3.Picture = Image2.Picture
Image4.Picture = Image2.Picture
Dim n%, k%, kd%, sum&, sd&
If Option3.Value Then
Text1 = "": Text2 = ""
Label5 = "Кол-во чисел:": Label6 = "Сумма чисел:"
Label7 = "Введенные числа:"
Label7.Visible = True
List1.Visible = True: List1.Clear
Label1 = "Вводится последовательность натуральных чисел с " & _
"неопределенным количеством элементов. Найти сумму самой " & _
"длинной ее цепочки подряд идущих нечетных чисел."
k = o: kd = 0
sum = 0: sd = 0
Randomize
Do
n = Int(Rnd * 1000)
List1.AddItem Str(n)
If n Mod 2 <> 0 Then
k = k + 1
sum = sum + n
Else
If sum > sd Then sd = sum: kd = k
k = 0
sum = 0
End If
Loop Until MsgBox("Закончить ввод? ", 36) = vbYes
Text1 = Str(kd): Text2 = Str(sd)
End If
End Sub
Вид рабочей формы с результатом решения 3-ей задачи:
Процедура завершения работы приложения:
Private Sub Command1_Click()
End
End Sub
Как обычно добавляем к проекту форму-заставку frmZ3z. Разработав ее, запускаем приложение на выполнение.
Вопросы для защиты Задания 3.
1. Назначения и основные свойства элементов управления OpnionButton,
ListBox, Frame, Image.
2. Способы заполнения списка и добавления новых элементов в список
ListBox.
3. Особенности размещения элементов на контейнере Frame.
4. Оператор цикла с параметром (регулярный цикл), его назначение, принцип
работы (этапы выполнения его компонентов), ограничения на параметр и
его значения, вложенные циклы с параметром, досрочный выход из цикла.
5. Операторы итерационных циклов, их назначение, принципы работы,
отличия между разными типами итерационных циклов, вложенные
итерационные циклы, досрочный выход из итерационных циклов.
Желаю успешной защиты Задания 3!