Алгоритм и его свойства

Лекция №10 - ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

Алгоритмы могут описывать процессы преобразования самых разных объектов. Широкое распространение получили вычислительные алгорит-мы, которые описывают преобразование числовых данных. Само слово «алгоритм» происходит от algorithmi – латинской формы написания им ени выдающегося математика IX века аль-Хорезми, который сформулировал правила выполнения ар ифме тических операций.

Алгоритм – э то строго определенная последовательнос ть действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд.

Алгоритмы состоят из отдельных команд, которые исполнитель вы-полняет одну за другой в определенной последовательности. Разделение информационного процесса в алгоритме на отдельные команды является важным свойством алгоритма и называется дискретностью.

Каждый исполнитель обладает определенным набором, системой ко-манд, которые он может выполнить. Алгоритм должен быть понятен ис-полнителю, то есть должен содержать тольк о те команды, которые входят в систему его команд.

Запись алгоритма должна быть так о в а, чтобы, выполнив очередную команду, исполнитель точ но знал, какую команду необходимо исполнять следующей. Это свойство алгоритма называется детерминированностью.

Должны быть определены начальное состояние объекта и его конеч-ное состояние (цель преобразования). Алгоритм должен обеспечивать пре-образование объекта из начального состояния в конечное за конечное число шагов. Такое свойство алгоритма называется результативностью.

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

Алгоритм, записанный на «понятном» компьютеру языке программи-рования, называется программой.

6.2. Развитие языков программирования

Информацию в компьютере обрабатывает процессор, следовательно, алгоритм должен быть записан на языке, «понятном» для процессора, то есть на машинном языке, представляющем собой логические последова-те л ь но с т и нулей и единиц.

На заре компьютерной эры, в 50 - е годы XX века, программы пис а-лись на машинном языке и представляли собой очень длинные последова-те л ьно с т и нулей и ед иниц. Составление и отладка та к их программ было чрезвычайно трудоемким делом.

В 60-70-е гг. для облегчения труда программистов начали создаваться языки программирования высокого уровня, формальные языки, кодирую-щие алгоритмы в привычном для человека виде (в виде предложений). Та-кие языки программирования строились на основе использования опреде-ленного алфавита и строгих правил построения пре дложений (синтаксиса).

На ибо л ее широко распространенным типом языков программирова-ния высокого уровня являются процедурные языки. В так их языках широко используются управляющие конструкции (операторы), которые позволяют закодировать различные алгоритмические структуры (линейну ю, ветвле-ние, цикл).

Одним из первых процедурных языков программирования был из-вестный всем Бейсик (Basic), созданный в 1964 году. В тече ние последую-щего времени Бейсик развивался, появлялись его различные версии (MSX-B a s i c, Б ейсик -Агат, QBasic и др.). Другим широко распространенным яз ы-ком программирования алгоритмического типа является Pascal.

6.3. Основы объектно-ориентированного визуального программирования

Приложения на языках объектно-ориентированного программирова-ния Visual Basic и Visual Basic for Applications (VBA) строятся из объектов, подобно том у, как из блоков и различных деталей строятся дома. Про -граммные библиотеки готовых объектов входят в эти системы программи-рования, причем языки Visual Basic и VBA различаются между собой, главным образом, составом программных библиотек.

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

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

6.3.1. Объекты: свойства, методы, события

Основной единицей в объектно-ориентированном программировании является программный объект, который объединяет в себе как описываю-щие его данные (свойства), так и средства обработки этих данных (методы). Если говорить образно, то объекты – э то «существительные», свойства объекта – это «прилагательные», а методы объекта – это «глаголы».

Программные объекты обладают свойствами, могут использовать ме-то ды и реагируют на события.

Свойства объектов (Properties). Каждый объект обладает опреде-ленным набором свойств, первоначальные значения которых можно уста-новить с использованием диалогового окна системы программирования.

Значения свойств объектов можно изменять в программном коде. Для присвоения свойству объекта нового значения в левой части строки про-граммного кода необходимо указать имя объекта и затем название свойст-ва, которые в с о о тв е тс тв ии с правилами точечной но тации разделяются между собой то ч к ой. В правой части строки (после знака равенства) необ-ходимо запис ать конкретное значение свойства:

Объект.Свойство = ЗначениеСвойства

Например, установим в выделенном фрагменте тек с та (объект Selection) для первого символа (объект Characters (1)) начер тание полу-жирный (свойство Bold).

Св ойс тв о B o l d может бы ть установлено (з начение Tr u e с войс тва) ил и не установлено (значение False свойства). Значения True и False являются ключевыми словами яз ы к а и поэтому выделяются полужирным начертанием.

Пр ис в оим свойству B o l d з наче ние True:

S elec tion. Char ac ter s (1). Bo ld = Tr u e

Объект обычно имеет несколько свойств. С помощью конструкции With... En d With можно задать значения сразу нескольких свойств объ-екта. Синтаксис ус та но в к и значения нес кольк их свойств объекта:

With

Объект.Свойство1 = ЗначениеСвойства1.Свойство2 = ЗначениеСвойства2.СвойствоN = ЗначениеСвойстваN

En d Wit h

Например, для пр идания выделенному фрагменту тек с та, состояще-му из 10 символов, начертания «полужирный курсив» можно использов ать следующий программный код:

For I = 1 То 10

With Selection.Characters(I)

.Bold = True

.Italic = True End With Next I

Ме т о д ы объектов (Methods). Для то г о чтобы объект выполнил ка-кую-либо операцию, необходимо применить метод, которым он обладает. Многие методы имеют аргументы, которые позволяют задать параметры выполняемых действий. Для присваивания аргументам конкретных значе-ний используется двоеточие и знак равенства, а друг от друга аргументы отделяются запятой.

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

Объект.Метод apг1:=значение, арг2:=значение

Так, сохранение на диске открытого в приложении Word документа реализуется методом Save, без аргументов: Documents("Проба.doc").Save

Операция открытия в приложении Word документа Пробa.doc долж-на содержать не то л ьк о название метода Open, но и указание пу ти к откры-ваемому файлу (аргументу FileName метода Open необходимо присвоить конкретное з наче ние):

Documents().Open FileName:="С:\Документы\Проба.doc"

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

Например, объект Document (Документ) реагирует на события Open (Открытие), New (Создание) и Close (Закрытие), а объект S e lec t io n (Вы-деленный фрагмен т документа) реагирует на события Cut (Вырезка), Сору (Копирование), Paste (Вставка), Delete (Удаление) и та к далее.

6.3.2. Графический интерфейс и событийные процедуры

Графический интерфейс. Графический интерфейс необходим для реализации интерактивного диалога пользователя с работающим при-ложением. Основой для создания графического интерфейс а разрабаты-ваемого приложения являютс я форма (в Visual Basic — класс объектов Form, в VBA — класс объектов UserForm), представляющая собой окно, в котором размещаются управляющие элементы. Не обх о д им о отметить, ч то графический интерфейс проек та может включать в себя несколько форм.

Форма – это объект, представляющий собой окно на экране, в кото-ром размещаются управляющие элементы.

Визуальное конструирование графического интерфейса приложе-ния состоит в том, что на форму с помощью мыши помещаются и «ри-суются» те или иные управляющие элементы.

Классы управляющих элементов (Controls) имеют различное назна-чение в графическом интерфейсе приложения. Текстовые поля (Text-Box), метки (Label) и списки (ListBox) обычно используются для ввода и вывода данных, графические окна (PictureBox) — для вывода графики, ко-мандн ые кнопки (CommandButton), переключатели (CheckBox) и флажки (OptionsButton) – для организации диалога и так далее.

На форму может быть помещено несколько экземпляров одного класса управляющих элементов, например, несколько кнопок Com-mandl, Command2, Command3 и так далее, каждая из которых обладает индивидуальными значениями свойств (надпись, размеры и др.).

Управляющие элементы – это объекты, являющиеся элементам и графического интерфейса прилож ения и реагирующие на события, про-изводимые пользователем или программными объектами.

Форма и управляющие элементы обладают определенными набо-

рами свойств, методов и событий (табл. 6.1).

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

Имя процедуры включает в себя имя объекта и имя события.

Объект Событие()

Событийная процедура представляет собой подпрограмму, кото-рая начинает выполняться после реализации определенного события.

В событийной процедуре может участвовать несколько объек-тов. Например, само событие происх одит с первым объектом (Объ-ект1), в результате второй (Объект2) изменяет значение своего свойст-ва, а тр ети й (Объект3) реализует какой-либо метод и так далее.

Каждая процедура предс тавляет собой отдельный программный модуль, который реализует определенный алгоритм. В терминологии процедурного программирования такие процедуры соответствуют подпрограммам, поэто му каждая из событийных процедур начинает-ся с ключевого слова Sub (subroutine — подпрограмма) и заканчивается ключевыми словами End Sub.

6.4. Интегрированная среда программирования Visual Basic

Интегрированная среда разработки языка Visual Basic предоставляет пользователю удобный графический интерфейс в процессе разработки приложения. Рассмотрим интерфейс среды Visual Basic (рис. 6.1) и назна-чение каждой из панелей (окон).

1. Главное меню. Предназначено для управления проектом, т.е. выполнения команд создания, открытия, сохранения, печати, запуска, останова проекта, отмены или возврата действий, настройки интер-фейса приложения и др. операций с проектом. Стандартно настроен-ное главное меню среды Visual Basic показано на рис. 6.2.

Рис. 6.2. Главное меню

2. Па не ль инструментов. В левой части окна интегрированной среды разработки Visual Basic располагается Панель инструментов (ToolBox), содержащая пик тограммы управляющих элементов (рис. 6.3). Стан-дартный набор управляющих элементов включает в себя 21 класс объек-то в: CommandButton (командн ая кнопка), TextBox (текстовое поле), Lab el (надпись) и т. д. Существует возможность дополнить панель инструментов новыми классами управляющих элементов RichTextBox (усоверш енствован -ное текстовое поле), ImageList (список изображений) и др.

 


Рис. 6.1. Интерфейс среды Visual Basic:

1 – главное меню; 2 – панель инструментов; 3 – конструктор форм;

4 – проводник проекта; 5 – свойства объекта;

6 – положение формы

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

Фактически мы размещаем на форме экземпляры опре-деленных классов объектов. Например, выбрав класс Com-mandButton, мы можем разместить на форме неограничен-ное количество экземпляров этого класса, то есть команд-ных кнопок Command1, Command2, Command3 и так далее. 3. Окно Конструктор форм. Окно Конструктор форм (рис. 6.4) является основным рабочим окном и распо-ложено в центре окна интегрированной среды разработки языка Visual Basic. По умолчанию проекту присваивается имя Project1. Им ен но в этом окне происходит визуальное конструирование графического интерфейса разрабаты-ваемого приложения.

В окне конструктор форм располагается сама форма Form1, которая является также объектом и принадлежит классу объектов Form. Размеры формы можно менять, перетаскивая мышью правую или нижнюю границу формы.

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

4. Окно Проводник проект а. Окно Проводник проекта (Project) рас-полагается в верхнем правом углу (рис. 6.5).

Рис. 6.4. Конструктор форм Рис. 6.5. Проводник проекта

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

Проект хранится в файле с расширением vbp (в данном случае в файле project1.vbp). Кроме тог о, входящие в проект формы хранятся в от-дельных файлах с расширением frm (в данном случае форма, входящая в состав проекта, хранится в файле Form1.frm).

5. Окно Свойства объекта. Справа располагается окно Свойства объекта (Properties) – рис. 6.6. Окно содержит список объектов и спиок свойств, относящихся к выбранному объекту (форме или управляющему элементу на форме). На рисунке выбран объект Form1 класса Form.

Список свойств разделен на две колонки. В левой находятся имена свойств, в правой – их значения. Установленные по умолчанию значе-ния могут быть изменены. Свойством объекта являетс я количественная или качественная характеристика этого объекта (размеры, цвет, шрифт и др.).

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

Рис. 6.6. Окно Свойства объектов

6. Окно Расположение форм ы. В нижнем правом углу находится окно Расположение формы (Form Layout) – рис. 6.7. Оно показывает, где будет располагаться окно формы на экране монитора в период выполнения программы. Положение формы можно изменять перетаскиванием мышью.

Рис. 6.7. Окно Расположение формы

Этапы разработки приложения. Создание приложения в среде Visual Basic можно условно разделить на несколько этапов:

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

2. Задание значений свойств объектов графического интерфейса. С помощью окна Свойства объекта задаются значения свойств управляющих элементов, помещенных ранее на форму.

3. Создание программного кода. В окне Редактор кода производится ввод и редактирование программного кода процедур.

4. Сохранение проекта. Так как проекты включают в себя несколько файлов (в том числе несколько файлов форм), рекомендуется для каждого проекта создать отдельную папку на диске. Сохранение проекта произво-дится с помощью меню File. Сначала необходимо сохранить форму и свя-занный с ней программный модуль с помощью пункта меню Save Form1.frm As... По умолчанию для файла формы предлагается им я, заданное в каче-стве значения свойства Name и расширение frm.

Далее, необходимо сохранить файл проекта с помощью пу нк та меню Save Project As... В с о о тв е тс тв ие с соглашением об именах объектов целе-сообразно сохранить проект под именем с префиксом prj, например prjVBI.vbp.

5. Компиляция проек та в приложение. Сохраненный проект можетвыполняться тольк о в самой системе программирования Visual Basic. Длято г о чтобы преобразовать про ек т в приложение, которое может выполняться непосредс тв енно в среде операционной системы, необходимо

сохранить проект в исполняемом файле (типа ехе). Для компиляции проекта в испол няем ый файл используется команда [File-Make...]

6.5. Пример разработки приложения в среде Visual Basic

Задание. Разработать Windows-приложение для расчета необходи-мого числа шпуров для взрывания породного забоя, определяемого форму-лой

где q – удельный расход ВВ,

здесь q1 – нормальный удельный расход ВВ, ;

f – крепость взрываемых пород по шкале проф. Протодьяконова; f1 – к о э ффицие н т структуры породы, f1 = 1,3ч1,4;

– коэффициен т зажима породы,

S - площадь поперечного сечения выработки, м2;

7] – коэффициент использования шпура, принять равным:

- при крепости пород f < 4 г/ = 0,9;

- при крепости пород 10 < f < 4 г/ = 0,85;

- при крепости пород f > 10 г/ = 0,8.

у - коэффициент заполнения шпура,;к= 0,4-^0,5;

d - диаметр патрона ВВ, см;

р – гравиметрическая плотность ВВ в патронах, г/см3, принимаемая согласно приведенной таблицы в зависимости от типа ВВ;

e - коэффициент работоспособности ВВ, принимаемый согласно сле-дующей таблице в зависимости от типа ВВ:

Тип ВВ Коэффициент e ρ, г/см3
Аммонит скальный №1 0,8 1,1 0
Детонит М 0,8 2 1,1 5
Аммонит АП-5ЖВ 1,1 7 1,1 5
Аммонит № 6ЖВ 1,0 0 1,2 0

Предусмотреть вывод результатов на экран и в файл. В качестве ре-з у л ьта то в вывести наименование выбранного пользователем ВВ, его ос-новные характеристики и рассчитанные удельный расход ВВ и число шпу-ров на забой.

Разработку приложения для решения пос тавленной задачи произво-дим в следующей последовательности:

1-й эт ап – создание графического интерфейса прилож ения. Ин тер-фейс определяет внешний вид программы и содержит все необходимые объекты, позволяющие вводить исходные данные и управлять проектом.

Поскольку задача имеет небольшой объем исходных данных и ре-з у л ьта тов расчета, достаточно разработать только одну форму, на которой р аз м ес ти ть все необходимые объекты. Для решения более сложных задач обычно требуется разработка нескольких экранных форм, которые в ходе выполнения программы сменяют друг друга. О создании многооконного приложения читайте в [6].

Исходя из пос тавленной задачи, определяем основные блоки, кото-рые войдут в интерфейс программы:

– блок исходных данных;

– блок р е з у л ь та то в расчета;

– блок элементов управления проектом.

Формирование блока исходных данных. Пр и составлении перечня ис-ходных данных, выносимых в интерфейс приложения, необходимо руко-водствоваться следующими рекомендациями:

– количество исходных данных должно быть минимал ьно возмож-ным, т.е. не следует запр ашивать параметры, одноз начно зависящие друг от друга. Например, в рассматриваемой задаче достаточно запросить толь-

ко крепость взрываемых пород, а значения коэффициента использования шпуров, а так ж е нормального удельного расхода ВВ могут определяться в программе в зависимости от крепости, поэтому последние две величины вы-носить на экранную форму и запрашивать у пользователя не следует, так как это загромождает форму и делает программу неудобной для пользователя;

– на форму рекомендуется выносить то л ьк о те исходные данные, значения которых могут изменяться в различных вариантах расчета. В данном примере э то крепость пород, площадь сечения выработки, тип ВВ. Значения постоянных коэффициентов (например, коэффициент заполнения шпура, коэффициент структуры породы в рамках данной задачи), а так ж е физические и математические константы выносить на форму не имеет смысла. Такие значения лучше ввести в программном коде с помощью операторов присвоения;

– размерность вводимых величин должна быть удобной для пользо-вателя, т.е. соответствовать общепринятым для данного параметра едини-цам, наприм ер, диаметр патрона принято указывать в мм, крепость пород в безразмерных ед иницах по шкале про ф. Пр о т о д ь як о но в а и т.д. Ес ли в формулы данные значения должны подставляться в других единицах из-мерениях, лучше этот перевод предусмотреть внутри программного кода (включить в формулу), а ввод данных организовать в «пр ивычных» для пользователя единицах. Это снизит вероятность ошибки пользователем и сделает использование приложения более удобным. В любом случае на фор-ме рядом с вводимой величиной рекомендуется указывать ее размерность;

– если возможные значения вводимых величин ограничены рядом стандартных значений, (например, диаметр патрона ВВ может принимать значения 28, 32, 36 или 45 мм), то так ие данные целесообразно вводить с помощью специальных инструментов Option Button, Check Box ил и Combo Box, которые позволяют пользователю выбрать необходимую величину из заранее сформированного ряда значений или списка;

– при формировании большого списка выбора значений, удобнее всего ис п о л ь з о в а ть для ввода данных инструмент Combo Box (выпадаю-щий список), который позволяет сэкономить место на форме.

Учитывая вышеизложенные рекомендации, составляем минимально возможный список исходных данных, которые необходимо вынести на форму приложения.

Для удобства все исходные данные, их единицы измерения и преде-лы допус тимых значений сводим в табл. 6.2. Пределы значений, которые могут принимать вводимые переменные, указываем для тог о, чтобы затем в программном коде отсечь заведомо неверные значения, которые по ошибке может ввести пользователь. В этой же таблице указываем, какой из инструментов будет использоваться для ввода то г о или иного данного. Та-ким образом, из 12 переменных, входящих в расчетные формулы, в интер-фейс приложения достаточно вынести всего 4 значения исходных данных (таб л. 6.2), все ос тал ьн ые будут определены ил и заданы непосредственно в программном коде.

Таблица 6.2 Исходные данные для расчета, вводимые пользователем

Вводимый пар аметр Единица измер ения Пределы допус-тимых значений Инструмент для ввода
Крепость пород относ. ед. 1 – 20 текстовое окно
Площадь поперечного сечения выработки м2 6 – 20 текстовое окно
Диаметр патрона мм 28; 32; 36; 45 кнопки-пер еключатели
Тип ВВ задаются списком выбора выпадающий список

Выбор инструмента для ввода исходных данных определялся из сле-дующих соображений:

– крепость пород и площадь сечения выработки могут принимать любые, в то м числе и дробные значения, поэтому пользователю целесооб-разно предоставить пустое те к с то в о е окно (Text Box) для ввода произволь-ного значения;

– диаметр патрона может принимать то л ьк о 4 различных значения, поэтому во избежание ввода несуществующего диаметра принят инстру-мент «кнопки-переключатели» (Option Button), который позволяет выбрать то л ьк о один из предложенных диаметров;

– ти п ВВ представляет собой символьную (строковую) переменную, состоящую из набор а определенных букв и цифр. Во избежание ошибоч-ного написания переменной и для удобства пользователя применяем инст-румент «выпадающий список» (Combo Box), который также позволяет вы-брать нужное ВВ из заранее сформированного списка.

Формирование блока результатов. Пер еч е нь выводимых результа-то в расчета формируется исходя из условий каждой конкретной задачи, при этом наиболее важные и конечные р ез у л ь та ты расчета целесообразно выводить непосредс тве нно на форму, а полный пер ечень результатов, а так ж е исходных данных сохранять в отдельном текстовом файле. Выводи-

мые результаты привед ены в та б л. 6.3.

Таблица 6.3 Выводимые результаты расчета

Выводимый пар аметр Единица измер ения Способ (инструмент) вывода
Удельный расход ВВ кг/м3 Текстовое окно + вывод в файл
Количество шпуров на забой шт. Текстовое окно + вывод в файл
Крепость пород относ. ед. Вывод в файл
Площадь поперечного сечения выработки м2 Вывод в файл
Тип ВВ Вывод в файл
Диаметр патрона мм Вывод в файл
Коэффициент работоспособности ВВ Вывод в файл
Плотность патронирования ВВ кг/м3 Вывод в файл

Формирование блока элементов управлен ия проектом. В этот блок входят, как правило, командные кнопки (Command Button), которые позво-ляют пользователю производить необходимые де йс твия: запускать про-грамму для выполнения расчета, сохранять р ез у л ьтаты в файл, выходить из программы и т.д.

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

– «Результат» – для запуска расчета;

– «Сохранить» – для запроса необходимости сохранения р ез у л ь та тов в файл;

– «ОК» – для подтверждения введенных параметров (диска, имени файла, фамилии пользователя) для сохранения;

– «Выход» – для закрытия окна приложения и выхода из программы.

Определившись со всеми объектами приложения, переходим к их нанесению на форму, т.е. к непосредственному формированию интерфейса программы.


Рис. 6.8. Вид окна Visual Basic после запуска нового проекта

Пр и запуске Visual Basic и выборе нового проекта «Стандартный exe» а в то м а тич е с к и открывается проект с именем Проект1, имеющий пус -ту ю форму, которой по умолчанию присваивается имя Form1 (рис. 6.8). По л е этой формы – это и ес ть место для формирования интерфейса буду-щего приложения. Из м ени ть размеры окон проекта ил и формы можно, «потянув» окно мышью за стороны или угол окна.

Для нанесения объектов на форму необходимо мышью выбрать на панел и инструментов нужный объект и «растянуть» его в нужном месте на поле формы до необходимых размеров. Напр имер, необходимо нанести надп ис ь «Исходные данные». Для этого выбираем инструмент lab e l (метка, на панели инструментов он обозначен иконкой) и на н о с и м этот объект

в левом верхнем углу формы (рис. 6.9).

Ри с. 6.9. Нане се ние на форму первого объекта L a b e l 1

Для внесения надписи внутрь объекта и задания его основных свойств (точных размеров, положения на форме, типа и цвета шрифта над-писи, цвета фона, выравнивания над писи в форме, видимости и др.) необ-ходимо использовать окно свойств, расположенное по умолчанию в правой стороне экрана. Так, для внесения надписи «Исходные данные» необходи-мо найти свойство Caption (заголовок) и справа от него в колонке свойств ввести соответствующую надпись, которая одновременно появится и на поле метки Label1. Аналогично можно изменить и другие свойства. Ос-новные свойства объектов и их краткая характеристика приведены в табл. 6.4. Выбором цвета фона, цвета, размера и свойств (полужирный, курсив) шрифта можно выделять однородные блоки или надписи.

Ниже метки Label1 с надписью «Исходные данные» наносим метку Label2 с надпис ью «К р е п о с т ь пород», а рядом с ней – те к с то в о е окно Text1, в которое пользователь будет вводить необходимое значение крепос ти.

Текстовые окна наносятся на форму с помощью иконки.

Таблица 6.4 Некоторые свойства объектов

Свойство Характеристика
Align ment Выравнивание надписи внутри объекта по левому, правому кр аю или по центр у
AutoSize При значении этого свойства True (истина) размеры объекта автомати-чески сжимаю тся до размеров внесенной в него надписи, пр и значении False (ложь) размеры объекта остаются такими, какими их задал про-гр аммист
BackColor Задание цвета фона объекта
BorderSty le Задание стиля рамки объекта
Caption Ввод надписи или заголовка
DataFormat Выбор формата данных (общий, числовой, формат даты, времени и др.)
Font Выбор типа и размера шрифта надписи
ForeColor Задание цвета надписи
Height Задание высоты объекта
Left Задание положения объекта на форме относительно ее левой рамки
MousePointer Выбор вида курсора при наведении мыши на данный объект
Picture Вставка рисунка
Top Задание положения объекта на форме относительно ее верхней рамки
Vis ibl e Задание видимости (True) или невидимости (False) объекта на форме
Width Задание ширины объекта

Далее на форму наносим метку Label3 с надписью «Площадь попе-речного сечения выработки», рядом помещаем текстовое окно Text2 для ввода пользователем необходимого значения площади, а затем метку Label4 с указанием единицы измерения «м кв.».

Как было рассмотрено выше, диаметр патрона задаем с помощью кнопок-переключателей (Option Button). Для их логического объединения сначала наносим на форму рамку (Frame), которая на панели инструментов обозначается иконкой. В свойстве рамки C a pt io n вв одим те к с т «диаметр патрона». Размеры рамки определяем, исходя из размещения внутри нее 4 кнопок-переключателей, каждая из которых определяет один из возможных диаметров. Вн у т р ь рамки с помощью инструмента последовательно вно-сим 4 элемента Option Button и в свойстве Caption каждого из них задаем не-обходимый те к с т: «28 мм» для первого объекта, «32 мм» – для второго и т.д. По с л е д н им из исходных да нных, выносимым на форму (см. таб л. 6.2), является ти п ВВ, который удобнее ввести, используя инструмент «вы-падающий список» (ComboBox), обозначаемый на панели инструментов иконкой. Для удобства пользователя предварительно нанесем на

форму рамку (Frame) с заголовком (Caption) «Тип ВВ», а внутри нее раз-местим «выпадающий список». В свойство Text этого объекта можно вне-сти наим енование первого ВВ, которое будет приниматься по умолчанию, например, «аммонит скальный №1». Формирование полного списка для выбора из него нужного ВВ производится на стадии написания программ-ного кода.

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

Рис. 6.10. Форма с нанесенными объектами для ввода исходных данных

Аналогично вышеописанному порядку наносим все необходимые объекты для вывода р е з у л ь та то в расчета. Это метки и те к с то в ы е окна, для вывода удельного расхода ВВ и количества шпуров на забой.

Остается нанес ти на форму последний блок объектов, с помощью которых пользователь будет управлять проектом. Это командные кнопки (Command Button), которые наносятся с помощью инструмента.

Для нанесения на командные кнопки надписей используется их свойство Caption. Вв о д и м последовательно на кнопки надписи «Резуль-та т», «Сохранить», «Выход». Кроме этих кнопок, на форму наносим ряд дополнительных объектов, определяющих параметры сохранения резуль-та то в в файл. Это метки с надписями «Диск», «Им я файла», «Ф.И.О. сту-дента», а так ж е выпадающий список для выбора диска, на который будет производиться сохранение, текстовые окна для ввода имени файла и фами-лии студентов.

Для то г о, чтобы разнообразить интерфейс программы, на форму можно наносить различные изображения или рисунки. Для наглядности процесса бурения шпуров в забое нанесем на форму рисунок с изобра-жением бурильной установки, при этом используем объект PictureBox, наносимый на форму с помощью инструмента.

Готовый интерфейс приложения показан на рис. 6.11.


Рис. 6.11. Интерфейс приложения

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

При составлении алгоритма очень важно следить за тем, чтобы все параметры, входящие в расчетную формулу были введены или определены ранее. Если значение некоторой переменной не задано, по умолчанию ей присваивается 0, что приводит к ошибочным результатам или сбою в выполнении программы.

Алгоритм рассматриваемого процесса заключается в следующем:

- считывание значений крепости пород F и площади поперечного се­чения S, введенных пользователем в текстовые окна;

- определение диаметра патрона d в зависимости от выбранной поль­зователем кнопки-переключателя;

- определение коэффициента работоспособности е и плотности па­тронирования ρ в зависимости от выбранного пользователем из выпадаю­щего списка типа ВВ;


– прис воение значений пос тоя нным коэффициентам: структуры по-роды и заполнения шпура ;

– проверка корректности исходных данных, введенных пользовате-лем. Этот шаг необходим для исключения заведомо невер ных значений, которые может ввести пользователь. Например, при задании крепости по-род, меньшей 1 или большей 20, программа должна выдать сообщение об ошибке и обнулить введенные результаты. Аналогично при вводе площади сечения, меньшей 6 или большей 20 м2, программа должна выдать преду-преждение пользователю о то м, ч то данный алгоритм на заданную пло-щадь не рассчитан. Во избежание сбоя программы, необходимо также вы-дать сообщение об ошибке в то м случае, если пользователь не задал ни один из предложенных диаметров патрона;

– определение значения коэффициента использования шпура η в за-висимости от крепости пород f;

– расчет коэффициента зажима;

– расчет нормального удельного расхода ВВ ;

– расчет удельного расхода ВВ ;

– расчет количества шпуров на забой;

– вывод р е з у л ь та то в расчета на экран (в текстовые поля) и при до-полнительном запросе пользователя – в файл;

– выход из программы с запросом подтверждения о выходе.

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

Пр им ер таблицы идентификаторов применительно к рассматривае-мой задаче приведен в та б л. 6.5. Здесь сопоставлены обозначения величин в формулах и принятые для них имена переменных. Вспомогательные пе-ременные необходимы для управления проектом, выдачи сообщений об ошибках или запросов подтверждения выхода. Назначение вспомогатель-ных переменных будет понятно в дальнейшем из программного кода.

Таблица 6.5 Таблица идентификаторов

Определяемый параметр Обозначение в формуле Имя пере-мен ной Тип переменной
Основные переменные    
Крепость пород f F Integer
Площадь по п ер еч н о г о сечения выработки S S Sin gl e
Диаметр патрона ВВ d D Integer
Коэффициент структуры породы f 1 F1 Single
Коэффициент заполнения шпура У GAMMA Single
Коэффициент использования шпура ц KISH Sin gl e
Коэффициент работоспособности е Е Sin gl e
Плотность патронированного ВВ р RO Single
Коэффициент зажима V NU Single
Нормальный удельный расход ВВ q 1 Q1 Single
Удельный расход ВВ q Q Single
Количество шпуров на забой N N Integer
Тип ВВ T IPVV St rin g
Вспомог ательные пер еменны е  
Сообщение о недопустимо низкой крепости пород а1 Integer
Сообщение о недопустимо высокой крепости пород а2 Integer
Сообщение о недопустимой для данно-го алгоритма площади сечения а3 Integer
Сообщение об отсутствии выбранного диаметра патрона а4 Integer
Запрос подтвер ждения выхода из пр о-гр аммы а5 Integer
Имя диска для со хр анения резу льтатов DISK St rin g
Имя файла для со хр анения результатов NAMEFILE String
Фамилия, инициалы студента FIO String

Выбор типа переменной зависит от того, какие значения эта пере-менная будет принимать. Если возможны только целые значения (напри-мер, число шпуров, диаметр патрона), целесообразно задать тип Integer (целочисленный); если возможны дробные значения (площадь сечения, КИШ, плотность патрона, удельный расход ВВ и т.д.), то необходимо задавать тип Single (вещественный); если же переменная будет принимать не числовое, а буквенное значение (тип ВВ, фамилия студента, имя файла), то для нее нужно задать тип String (строковый). Все данные можно объединить одним общим типом - Variant. Подробно обо всех типах переменных в Visual Basic, их описании и преобразовании - см. в [6].

4-й этап - написание программного кода. Для «оживления» объек-тов, нанесенных на форму, т.е. для обеспечения функционирования ко-мандных кнопок и других объектов приложения необходимо в соответствии с разработанным алгоритмом написать программный код.

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

Итак, наш программный код будет состоять из отдельных подпро-грамм, каждая из которых выполнится при определенном событии (дейст-вии пользователя). В данном примере так их событий будет 5, так им же бу-дет количество подпрограмм.

Первое событие – это загрузка формы, т.е. самое начало работы при-ложения. Еще до то г о, как пользовател ь нач нет вводить данные и нажи-мать на командные кнопки, форма полностью должна быть готова к этому, т.е. должны быть сформированы «выпадающие списки», должны быть ви-димыми нужные объекты и, наоборот, «спрятаны» пока ненуж ные.

Для тог о, чтобы начать писать подпрограмму, выполняемую при загрузке формы, необходимо дважды щелкнуть мышью в любом месте формы, свободном от объектов, при этом откроется окно ввода программного кода, в котором уже будут две готовые строки – первая и пос ледняя:

Private Sub Form_Load()

End Sub

Что э то означает? Private Sub – подпрограмма данного модуля, Form – имя объекта, в данном случае формы, Load – загрузка (событие), End Sub – конец подпрограммы, т.е. все действия, расположенные между этими строками, выполнятся сразу при загрузке (Load) данной формы (Form).

Пр и загрузке формы нам необходимо сформировать 2 «выпадающих списка» – Combo1, содержащий перечень ВВ для выбора, и Combo2, содер-жащий список дисков компьютера, на которые можно сохранять результа-ты. Для этого пос ле им ени спис ка Combo1 через то ч к у нужно пос тавить свойство AddItem (добавить) и затем в кавычках указать наименование ВВ, которое будет стоять в списке первым (по умолчанию). В следующей стро-ке аналогично указывается второе ВВ списка и т.д. Во втором выпадаю-щем списке Combo2 также с помощью свойства AddItem добавляются име-на дисков «С» и «D».

Д анный фрагмент подпрограммы будет выглядеть следующим образом:

Private Sub Form_Load() Combo1.AddItem "Аммонит скальный №1" Combo1.AddItem "Детонит М" Combo1.AddItem "Аммонит АП-5ЖВ" Combo1.AddItem "Аммонит 6ЖВ" Combo2.AddItem "C" Combo2.AddItem "D"

Кроме формирования выпадающ их списков с формы при ее загрузке необходимо убрать «лишние» объекты. Например, до нажатия пользовате-лем командной кнопки «Сохранить», все объекты, определяющие место сохранения, имя файла, фамилию студента, на форме не нужны. Их можно сделать нев идимым и с помощью свойства Visible, установив его значение для да нных объектов равным False: …

Label10.Visible = False Label11.Visible = False Label12.Visible = False Combo2.Visible = False Text5.Visible = False Text6.Visible = False Command4.Visible = False End Sub

Второе событие – щелчок пользователя по командной кнопке Com-mand1 («Результат»). По д р аз ум е в ае тс я, что щелчок мышью по кнопке «Ре-зультат» пользователь произведет после то го, как будут введены все необхо-димые исходные данные: задана крепос ть пород, площадь сечения выработки, выбраны диаметр патрона и тип ВВ. Поэтому данная подпрограмма до л ж на предус матривать считывание исходных данных, проверку их к о рр е к тнос ти, вс е расчетные действия и вывод р ез у л ьта то в (значений удельного расхода и количества шпуров на забой) в соответствующие те кс то в ые блоки на форме.

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

Private Sub Command1_Click()

End Sub

т.е. данная подпрограмма (Private Sub) выполнится при однократном щелчке мыши (Clic k) по командной кнопке Command1.

Сначала необходимо объявить все переменные, которые будут ис-пользоваться в программе, для этого используется оператор DIM. (Следует отметить, ч то большое количество операторов и ключевых слов Visual Basic унаследовал от более старых версий Бэйсика, в частности от Quick Basic, подробные сведения о котором можно найти в [7,8]).

Пр и объявлении переменных задаем их типы в с о о тв е тс тв и и с ранее обозначенными в та б л. 6.5:

Rem описание переменных

Dim F, D, N, a1, a2, a3, a4, a5 As Integer

Dim S, F1, GAMMA, KISH, E, RO, NU, Q1, Q As Single

Dim TIPVV, DISK, NAMEFILE, FIO As String

Затем производим считывание исходных данных (крепости пород и площади сечения выработки), введенных пользователем в тек с то в ые блоки Text1 и Text2. Для этого ис польз уем оператор Va l, который прео бразуе т те к с то в у ю информа цию в числовые значения:

Rem ввод исходных данных F = Val(Text1.Text) S = Val(Text2.Text)

Таким образом, в р е з у л ь та те выпол нения данных строк пер еменная F получит значение, введенное пользователем в те к с то в ы й блок Text1, а пе-ременная S – значение, введенное в Text2.

Для определения нужного значения диаметра патрона, который поль-зователь задал с помощью кнопок-переключателей Option1 – Option4, ис -польз уем их свойство Va l u e, которое приним ает значение True, е с л и данная кнопка выбрана пользователем, и значение False – в противном случае. Про -верку значения свойства Va l u e производим с пом ощ ью строчного оператора IF – THEN (ЕСЛИ – ТО):

If Option1.Value = True Then D = 2.8

If Option2.Value = True Then D = 3.2

If Option3.Value = True Then D = 3.6

If Option4.Value = True Then D = 4.5

Таким образом, ес л и пользователем выбрана кнопка Option1, то пе-ременная D приним ает значение 2,8, если Option2 – то значение 3,2 и т.д. (Здесь величина диаметра сразу задается в см, т.е. те х единицах, которые необходимо подс тавлять в расчетную формулу).

И последнее исходное данное, задаваемое пользователем, – это тип ВВ, который выбирается из выпадающего списка Combo1. В зависимости от этого программа должна определить значения коэффициента работо-способности ВВ и его плотнос ти патронирования. Вв о д этих данных осу-ществляем путем проверки значения свойства Text выпадающего списка Combo1, при этом используем блочную структуру оператора IF: If Combo1.Text = "Аммонит скальный №1" Then

E = 0.8

RO = 1.1

TIPVV = "Аммонит скальный №1" ElseIf Combo1.Text = "Детонит М" Then

E = 0.82

RO = 1.15

TIPVV = "Детонит М" ElseIf Combo1.Text = "Аммонит АП-5ЖВ" Then

E = 1.17

RO = 1.15

TIPVV = "Аммонит АП-5ЖВ" ElseIf Combo1.Text = "Аммонит 6ЖВ" Then

E = 1

RO = 1.2

TIPVV = "Аммонит АП-5ЖВ" End If

Блочный IF работает следующим образом. Сначала проверяется пер-вое условие, и если в выпадающем списке Combo1 пользователь оставил Text «Аммонит скальный №1», то выполнится блок операторов, следую-щий за данным условием, т.е. переменная E получит значение 0,8, пере-менная RO – значение 1,1, а строковая переменная тип ВВ – значение «Аммонит скальный №1». Если первое условие не выполняется, то про-грамма пропускает следующий за ней блок операторов и переходит к про-верке следующего условия, которое начинается с ключевого слова ElseIf. Пр и выполнения этого условия (т.е. при выборе пользователем детонита М), переменные Е, RO и TIPVV получат значения, соответствующие вы-бранному ВВ и т.д.

Заканчивается блочный IF оператором окончания проверки END IF.

Далее, согласно алгоритму, пр исваиваем значения посто янным ко-

эффициентам: F1 = 1.3 GAMMA = 0.5

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

В да нном случае возможны то л ь к о 3 ошибки пользователя:

– неверное задание значения (слишком низкое или высокое) или во-обще о тс у тс тв ие задания крепости пород;

– задание площади выработки, для которой данный алгоритм не подходит (т.е. меньше 6 или больше 20 м2);

– о тс у тс тв ие выбора диаметра ВВ (ни одна из кнопок-переключателей не выбрана).

Пр еду с м о тр им защиту программы от этих ошибок и организуем вы-вод сообщений пользователю о допущенных ошибках. Опять используем условный оператор проверки IF и команду вывода сообщений MsgBox. Например для исключения значений крепости ниже 1 (в том числе и пол-ного о тс у тс тв и я значе ния крепос ти) ис пользуем та к и е строки:

Rem проверка корректности исходных данных If F < 1 Then

a1 = MsgBox("Такой крепости не бывает." & Chr(13) & Chr(10) & "Подумайте лучше", 16, "Ошибка")

Text1.Text = "" End If

Это значит, что при значении крепости F, меньшем 1, тек с то в ое поле Text1 обнулится (пустые кавычки после Text1.Text) и появляется следую-щее окошко сообщения MsgBox


Организация вывода сообщений с помощью системного окна MsgBox осуществляется следующим образом:

Им я переменной = MsgBox("те к с т сообщения", A+ B+С, "заголовок окна"),

A – аргумент, определяющий, какая пик тог рамм а будет отображена на окне:

Значение А Вид сообщения Пиктогр амма
числовое бу квенное
  vbCritical Критическое сообщение ©
  vbQuestion Вопрос 4>
  vbExclamation Предупреждение !\
  vbInformation Информация 4^

B – аргумен т, определяющий на б о р кнопок:

  Значение B Отображаемые кнопки
числовое бу квенное
  vbOKOnly ОК
  vbOKCancel ОК, отмена
  vbAbortRetryIgnore Стоп, повтор, пропустить
  vbYesNoCancel Да, нет, отмена
  vbYesNo Да, нет
  vbRetryCancel Повтор, отмена

С – аргумент, определяющий, какая кнопка прин имае тс я по умолчанию:

  Значение С Отображаемые кнопки
числовое бу квенное
  vbDefaultButton1 Первая кнопка – по умолчанию
  vbDefaultButton2 Вторая кнопка – по умолчанию
  vbDefaultButton3 Третья кнопка – по умолчанию

Применительно к вышеприведен ному примеру: «Текст сообщения» – э то «Такой крепости не бывает. По дум ай те лучше» (символы Chr(13) и Chr(10) обозначают завершение строки и перенос части сообщения на следующую строку, значок & объединяет все части сообще-ния в едино е целое):

A + B + C = 16 + 0 + 0 = 16 (т.е. будет отображаться пик тограмма критиче-ского сообщения (A=16), одна кнопка ОК (B=0) и она же принимается по умолчанию (C=0).

«Заголовок окна» – в него выводится комментарий сообщения, в данном случае слово «Ошибка».

Кроме числовых значений переменные А, В и С могут принимать буквенные, например:

D = MsgBox("Сохранить результаты?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "Вопрос").

В этом случае на сообщении появится пик тограмма «Вопрос», три кнопки (Да, Не т и Отмена) и вторая кнопка (Не т) будет приниматься по умолчанию.

В зависимости от тог о, какая из предложенных кнопок будет нажата пользователем, переменная, которой присвоено сообщение MsgBox (в по-следнем случае переменная D, в первом примере – переменная а1), будет принимать одно из следующих значений

Значение переменной сообщения Выбранная кнопка
числовое бу квенное
  vbOK ОК
  vbCancel отмена
  vbAbort Стоп
  vbRetry Повтор
  vbIgnore Пропустить
  vbYes Да
  vbNo Нет

Продолжим проверку корректности исходных данных. Если пользо-ватель введет значение крепости пород, большее 20 (что при проведении горных выработок прак тически не встречается), программа выдаст сле-дующее сообщение:

If F > 20 Then

a2 = MsgBox("Действительно ли это крепость породы," & Chr(13) & Chr(10) & "а не напитка?", 36, "Вопрос")

If a2 = 7 Then Text1.Text = ""

В данном случае значения А + В + С = 32 + 4 + 0 = 36, поэтому на ок не сообщения отобразится пиктограмма «Вопрос» и дв е кнопки «Да» и «Нет», при этом по умолчанию будет приниматься первая из них. В случае нажатия на кнопку «Нет» (т.е. признания пользователем своей ошибки) переменная a2 принимает значение 7 (см. последнюю таблицу) и в этом случае те к с то в о е окно Text1 обнуляется. Если же пользователь нажал кнопку «Да», т.е. под-тв е р д ил заданное значение крепости свыше 20, то окно ав то м а тич ес к и за-крывается и расчет производится с этим значением крепости.

End If

Следующее сообщение об ошибке появится при неверном задании площади поперечного сечения. Здесь мы используем сложное условие, объединенное логическими операторами OR (ИЛ И) и AND (И):

If S <> 0 And (S < 6 Or S > 20) Then

a3 = MsgBox("Для указанной площади сечения" & Chr(13) & Chr(10) & "данная программа не рассчитана", 48, "предупреждение")

Text2.Text = ""

End If

Данное сообщение появится тольк о в то м случае, если площадь S будет меньше 6 ИЛ И (OR) больше 20, И (AND) при этом вообще будет за-дана (т.е. значение S не равно нулю). На сообщении будет пиктограмма «Предупреждение» (А=48) и одна кнопка ОК (В=0).

И пос леднее сообщение появится в то м случае, ес л и пользователь за-был выбрать диаметр патрона, т.е. не выбран ни один из элементов Option:

If Option1.Value = False And Option2.Value = False And Option3.Value = False And Option4.Value = False Then a4 = MsgBox("Не задан диаметр патрона!", 16, "Ошибка") End If

Пос л е проверки корректности исходных данных приступаем к непо-средственному расчету требуемых параметров и выводу р ез ул ь та то в на форму.

По значению крепости определяем КИШ: Rem расчет

If F <= 4 Then KISH = 0.9 If F > 4 And F <= 10 Then KISH = 0.85 If F > 10 Then KISH = 0.8

и последовательно рассчитываем коэффициент зажима, нормальный

удельный расход ВВ, удельный расход ВВ и количество шпуров на забой:

NU = 6.5 / Sqr(S)

Q1 = 0.1 * F

Q = Q1 * F1 * NU * E

N = 12.7 * Q * S * KISH / (GAMMA * D ^ 2 * RO)

Пос л едн ие два параметра выводим на форму в приго товленные для

них те к с то в ые окна Text3 и Text4: Rem Вывод результатов на экран Text3.Text = Format(Q, "0.000") Text4.Text = Format(N, "###") End Sub

Пр и выводе по формату в скобках задается имя выводимой перемен-ной и через запятую в кавычках собственно формат вывода – сколько зна-ков выделяется до и после запятой. Так, для удельного расхода Q выделен 1 знак для целой и 3 знака для дробной части, при этом в случае появления нуля в целой части или в конце дробной части он будет отображаться. Ес-ли вместо символа «0» в формате указать символ «#», то нули в вышена-званных позициях будут опущены. Так, для переменной N, определяющей число шпуров выделено 3 знака в целой части и в случае получения в ре-зультате одно- или двузначного числа первые нули отображаться не будут. Оператор End Sub закрывает подпрограмму, которая выполнится при однократном щелчке мыши по командной кнопке Command1.

Третье событие – щелчок пользовател я по командной кнопке Com-mand2 (Выход). Пр и этом необходимо выполнить запрос на подтверждение выхода из программы, который можно организовать с помощью уже из-вестного окна сообщения MsgBox:

Private Sub Command2_Click() a4 = MsgBox("Неужели Вы хотите выйти" & Chr(13) & Chr(10) & "из этой прекрасной программы?", 36, "Вопрос")

If a4 = 6 Then Unload Me End Sub

В данном случае при нажатии пользователем на кнопку «Да» пере-менная а4 принимает значение 6 и происходит выгрузка формы (Unload Me), в противном случае – сообщение закрывается, а выполнение програм-мы продолжается.

Четвертое событие – щелчок пользователя по командной кнопке Command3 («Сохранить»). В этом случае у пользователя нуж но запросить дополнительную информацию о том, на какой диск и в файл с каким име-нем следует сохранить исходные данные и результаты, а так ж е фамилию и инициалы пользователя для их последующего вывода в файл.

Для этого следует отобразить все ранее «спрятанные» (при загрузке формы) объекты:

Private Sub Command3_Click() Label10.Visible = True Label11.Visible = True Label12.Visible = True Combo2.Visible = True Text5.Visible = True Text6.Visible = True Command4.Visible = True End Sub

На форме появятся окна для ввода всех необходимых данных и ко-мандная кнопка ОК для подтверждения сохранения результатов.

Пятое событие – щелчок пользователя по командной кнопке Com-mand4 («ОК»). В р ез у л ь та те этого события все исходные данные и резуль-та ты должны быть сохранены в файл. Но сначала дублируем задание ос-

новных исходных данных и расчет показателей, которые затем будут вы-водиться в файл и сохраняться:

Private Sub Command4_Click()

Dim F, D, N As Integer

Dim S, F1, GAMMA, KISH, E, RO, NU, Q1, Q As Single

Dim TIPVV, DISK, NAMEFILE, FIO As String

Rem ввод исходных данных

If Option1.Value = True Then D = 2.8

If Option2.Value = True Then D = 3.2

If Option3.Value = True Then D = 3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: