В данном
уроке создается приложение, на примере которого вы сможете научиться:
Создадим
приложение, которое позволит выбрать несколько чисел, выводимых В списке В диалоговом
Окне Операции над элементами списка (рис. У3.1).
В группе
Операция следует установить один из переключателей: сумма, произведение или
среднее, чтобы указать, какая операция будет выполняться над выбранными числами.
Нажатие кнопки вычислить должно привести к выполнению операции и выводу результата
в поле Результат.
Рис.
У3.1. Диалоговое окно Операции над элементами списка
Обсудим,
как приведенная ниже программа решает перечисленные задачи и что происходит
в программе.
UserForm Initialize |
|
||
Нажатие кнопки
вычислить запускает на выполнение процедуру CommandButtonl
Click |
Определяет,
какой переключатель выбран, В зависимости от выбранного переключателя
производит действие над выбранными в списке числами. Найденное число
выводится в поле Результат. |
||
Нажатие кнопки
Отмена запускает на выполнение процедуру CommandButton2
Click |
Закрывает диалоговое
окно. |
||
'
Private Sub CommandButtonl_Click()
'
' Процедура
проведения вычислений с выбранными элементами
' списка в зависимости от выбранной операции
'
Dim i As Integer
Dim n As Integer
'
' i - вспомогательная
переменная
' n - играет роль счетчика числа выбранных элементов из списка
'
Dim Сумма As
Double
Dim Произведение
As Double
Dim Среднее
As Double
Dim Результат As Double
'
' Сумма - сумма
выбранных элементов из списка
' Произведение
- произведение выбранных элементов из списка
' Среднее -
среднее арифметическое значение выбранных элементов из списка
' Результат
- в эту переменную записывается результат, найденный
' в зависимости
от выбранного переключателя
'
'
' При выборе
первого переключателя вычисляется сумма выбранных элементов
If OptionButtonl.Value = True Then Сумма = 0
With ListBoxl
For i = 0 To
.ListCount - 1
If .Selected(i)
= True Then Сумма = Сумма + .List(i)
End If
Next i
End With
Результат =
Сумма
End If
'
' При выборе второго переключателя вычисляется произведение
'
выбранных элементов
'
If OptionButton2.Value = True Then Произведение = 1
With ListBoxl
For i = 0 To .ListCount - 1
If .Selected(i)
= True Then
Произведение = Произведение * .List(i)
End If
Next i
End With
Результат =
Произведение End If
'
' При выборе третьего переключателя вычисляется среднее арифметическое
' значение выбранных элементов
'
If OptionButton3.Value
= True Then Среднее = 0
n = 0
With ListBoxl
For i = 0 To
.ListCount - 1 i
If .Selected(i)
= True Then
n = n + 1
Среднее = Среднее + .List(i)
End If
Next i
End With
Результат = Среднее / n
End If
' Результат выводится в поле Результат
'
TextBoxl.Text = CStr(Format(Результат, "Fixed"))
End Sub
Private Sub CommandButton2_Click()
'
' Процедура закрытия диалогового окна
'
UserForml.Hide
End Sub
'
'
Private Sub UserForm_Initialize()
'
' Процедура инициализации диалогового окна
'
' Заполнение
списка и установка режима выбора
' нескольких элементов из списка
'
With ListBoxl
.List = Array(1,
3, 4, 5, 6, 7, 8, 10)
.Listlndex =
0
.MultiSelect
= fmMultiSelectMulti
End With
'
' Первоначальный выбор переключателя Сумма при
' инициализации
диалогового окна и задание
' текста всплывающих подсказок у переключателей
'
With OptionButtonl
.Value = True
.ControlTipText = "Сумма выбранных элементов"
End With OptionButton2.ControlTipText
= "Произведение выбранных элементов"
OptionButton3.ControlTipText = "Среднее значение выбранных элементов"
'
' Поле Результат не доступно для пользователя
'
TextBoxl.Enabled
= False
' Назначение клавише <Enter> функции кнопки Вычислить
' и задание текста
всплывающей подсказки
With CommanandButtonl
.Default = True
.ControlTipText
= "Нахождение результата"
End With
'
' Назначение
клавише <Esc> функции кнопки Отмена
' и задание текста всплывающей подсказки
'
CommandButton2.Cancel = True
'
' Задание -заголовка пользовательской формы
'
UserForm1.Caption = "Операции над элементами списка"
UserForm1.Show
End Sub
Интересной
особенностью приводимой процедуры инициализации userForm_initiaiize является
то, что заголовок диалогового окна вводится программно при помощи свойства Caption,
а не вручную при помощи окна Свойства (Properties).
Стоит также
отметить небольшой недостаток этой программы, связанный с тем, что в ней не
построен обработчик ошибок. Хотя на первый взгляд кажется, что в программе обработчик
ошибок совсем не нужен, это не так. Ошибка может возникнуть, например при вычислениях,
если выводимый в списке массив данных содержит как числа, так и строковые константы.
В качестве
самостоятельного задания составьте программу нахождения среднего балла студентов,
выбранных из списка в диалоговом окне Средний балл (рис. УЗ.2). Список заполните
из данных, введенных из диапазона на рабочем листе с помощью свойства RowSource
объекта ListBox. Фамилии студентов пусть будут расположены в столбце А, а их
оценки в столбце в диапазона с данными о студентах. Создайте в программе обработчик
ошибок, который будет проверять, являются ли данные из второго столбца списка
с оценками студентов числами. Если хотя бы одно из этих данных не является числом,
программа должна проинформировать об этом пользователя с просьбой исправить
найденную некорректность. Обратите внимание также на то, чтобы в диалоговом
окне средний балл надписи на кнопках ок и Отмена для большей презентабельности
были выведены полужирным шрифтом увеличенного размера.
Рис.
УЗ.2. Диалоговое окно Средний балл
Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.
Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").
Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.
Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.
Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.
|
![]() |