к оглавлению   к 4GL - визуальному программированию

Работа со списком

Цель урока

В данном уроке создается приложение, на примере которого вы сможете научиться:

Практика

Создадим приложение, которое позволит выбрать несколько чисел, выводимых В списке В диалоговом Окне Операции над элементами списка (рис. У3.1).

В группе Операция следует установить один из переключателей: сумма, произведение или среднее, чтобы указать, какая операция будет выполняться над выбранными числами. Нажатие кнопки вычислить должно привести к выполнению операции и выводу результата в поле Результат.

Рис. У3.1. Диалоговое окно Операции над элементами списка

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

UserForm Initialize

  1. Активизирует диалоговое окно.
  2. Запрещает ввод данных в поле Результат,
  3. Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> — Вычислить.
  4. Связывает с кнопками вычислить и отмена, а также с переключателями всплывающие подсказки.

Нажатие кнопки вычислить запускает на выполнение процедуру

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. Диалоговое окно Средний балл

к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, что такое мысленный эксперимент, gedanken experiment?
Это несуществующая практика, потусторонний опыт, воображение того, чего нет на самом деле. Мысленные эксперименты подобны снам наяву. Они рождают чудовищ. В отличие от физического эксперимента, который является опытной проверкой гипотез, "мысленный эксперимент" фокуснически подменяет экспериментальную проверку желаемыми, не проверенными на практике выводами, манипулируя логикообразными построениями, реально нарушающими саму логику путем использования недоказанных посылок в качестве доказанных, то есть путем подмены. Таким образом, основной задачей заявителей "мысленных экспериментов" является обман слушателя или читателя путем замены настоящего физического эксперимента его "куклой" - фиктивными рассуждениями под честное слово без самой физической проверки.
Заполнение физики воображаемыми, "мысленными экспериментами" привело к возникновению абсурдной сюрреалистической, спутанно-запутанной картины мира. Настоящий исследователь должен отличать такие "фантики" от настоящих ценностей.

Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.

Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").

Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.

Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.

Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution