Лекция 2. Занятие 3-4. 2 страница

в левом верхнем углу формы (рис. 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
Коэффициент структуры породы f1 F1 Single
Коэффициент заполнения шпура У GAMMA Single
Коэффициент использования шпура ц KISH Sin gl e
Коэффициент работоспособности е Е Sin gl e
Плотность патронированного ВВ р RO Single
Коэффициент зажима V NU Single
Нормальный удельный расход ВВ q1 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








Дата добавления: 2015-02-16; просмотров: 804;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.056 сек.