к оглавлению   к 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 - визуальному программированию

Знаете ли Вы, в чем ложность понятия "физический вакуум"?

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

Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.

Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.

Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.

Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 13.07.2020 - 11:13: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
13.07.2020 - 11:12: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Владимира Васильевича Квачкова - Карим_Хайдаров.
13.07.2020 - 09:19: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
13.07.2020 - 06:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от схиигумена Сергия (Николая Романова) - Карим_Хайдаров.
13.07.2020 - 06:11: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
13.07.2020 - 06:10: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от проф. В.Ю. Катасонова - Карим_Хайдаров.
12.07.2020 - 21:29: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> НОВЫЕ ТЕХНОЛОГИИ ИНТЕРНЕТ - Карим_Хайдаров.
12.07.2020 - 21:01: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
12.07.2020 - 20:59: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
12.07.2020 - 20:57: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Галины Царёвой - Карим_Хайдаров.
12.07.2020 - 19:23: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
12.07.2020 - 19:06: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution